802fece6bb2a249ded813a2fdcd61ba3d56abfab
[mono.git] / mono / metadata / ChangeLog
1 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * verify.c (do_leave): Empty the stack.
4
5 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * class.c (mono_class_is_assignable_from): Variance
8         doesn't work between reference and value types. For example,
9         given type C<T+>, C<int32> is not assignable to C<object>.
10         Break the argument checking loop on first error. 
11
12 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
13
14         * icall.c : base64_to_byte_array() needs some more strict
15           check for sequence of '=' characters. Patch by Santa
16           Marta (http://deee.g.hatena.ne.jp/santamarta).
17
18           Contributed under MIT/X11 license.
19           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
20
21 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
22
23         * domain.c: Disable LoadLibrary support to fix Win32 build.
24
25         Code is contributed under MIT/X11 license.
26
27 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
28
29         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
30         to help with cache behaviour.
31
32 2008-05-01  Miguel de Icaza  <miguel@novell.com>
33
34         * appdomain.c (mono_domain_from_appdomain): Add new accessor
35         method. 
36
37 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
38
39         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
40
41 2008-05-01  Dick Porter  <dick@ximian.com>
42
43         * process.c (process_get_fileversion): Only pass 16 bits of
44         language ID to VerLanguageName.  Fixes bug 381204.
45
46 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
47
48         * verify.c (mono_method_verify): Fix the comparison
49         operator for code bounds check.
50
51 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
52
53         * verify.c (mono_method_verify): Check the bounds of
54         all access of the code array.
55
56 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
57
58         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
59
60 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
61
62         * image.c (mono_image_strong_name_position): Fix return value when the rva is
63         not valid.
64
65 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
66
67         * loader.c (mono_get_method_from_token, mono_method_signature): Add
68         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
69         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
70         fixup main EXE images when using mono.exe for mixed-mode assembly support.
71         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
72         mono_runtime_load.
73         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
74         runtime initialization from metadata.
75         * assembly.c: Remove obsolete ceGetModuleFileNameA.
76         (mono_set_rootdir): Use mono_get_module_file_name.
77         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
78         handles.
79         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
80         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
81         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
82         MonoCLIImageInfo. Add support for module handles.
83         (load_cli_header): Update mono_cli_rva_image_map signature.
84         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
85         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
86         (mono_image_rva_map): Add support for module handles.
87         (mono_image_ensure_section_idx): Add support for module handles.
88         (mono_image_close): Add support for module handles.
89         (do_load_header): Add support for module handles.
90         (mono_image_open_from_module_handle): New function for internal use.
91         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
92         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
93         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
94         handles.
95         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
96         * image.h: Add mono_image_fixup_vtable.
97         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
98         support.
99         * coree.h: New file.
100         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
101         unsupported native code.
102         (mono_marshal_set_callconv_from_modopt): New function splitted from
103         mono_marshal_get_managed_wrapper.
104         (mono_marshal_get_managed_wrapper): Use
105         mono_marshal_set_callconv_from_modopt.
106         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
107         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
108         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
109         that results in a deadlock when the runtime is loaded in _CorDllMain.
110         * Makefile.am: Add coree.c and coree.h.
111
112         Contributed under MIT/X11 license.
113
114 2008-04-28  Mark Probst  <mark.probst@gmail.com>
115
116         * generic-sharing.c: Search for type arguments in array element
117         types as well.
118
119 2008-04-28  Mark Probst  <mark.probst@gmail.com>
120
121         * class-internals.h, generic-sharing.c: New, small runtime generic context.
122
123         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
124
125         * object.c: Don't setup the RGCTX when the vtable is created,
126         because we're setting it up lazily now.
127
128 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
129
130         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
131         64 bit support.
132
133 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
134
135         * verify.c (verify_class_for_overlapping_reference_fields): 
136         If class is under fulltrust allow reference types to overllap
137         if they have the same RVA.
138
139 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * pedump.c: Added new flag valid-only, that makes the verifier
142         behaves just like --security=validil. It won't fail type load
143         due to unverifiable restrictions.
144
145 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
146
147         * class-internals.h (struct MonoMethod): Added a verification_success
148         field to cache verifier executions. Reduced MonoMethod:slot size by
149         one bit.
150
151 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
152
153         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
154         instead of a 'vt' argument to save an indirection and to allow these to be used
155         for valuetypes.
156         (scan_vtype): New helper function to scan an area using a gc descriptor.
157         (mono_gc_wbarrier_value_copy): Implement this.
158         (handle_remset): Add support for REMSET_VTYPE.
159         (find_in_remset_loc): Ditto.
160         (mono_gc_base_init): Allow some debugging options to be controlled through the
161         use of the MONO_GC_DEBUG env variable.
162         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
163         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
164
165 2008-04-23  Martin Baulig  <martin@ximian.com>
166
167         * domain.c (mono_domain_create): Move the call to
168         mono_debug_domain_create() down, after allocating the domain id.
169
170 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
171
172         verify.c (verify_class_for_overlapping_reference_fields): Skip
173         static fields while verifying for overlapping fields as they
174         don't matter at all.
175
176 2008-04-23  Marek Habersack  <mhabersack@novell.com>
177
178         * domain-internals.h: added a declaration of
179         mono_make_shadow_copy.
180
181         * assembly.c (mono_assembly_open_full): shadow copying of
182         assemblies moved to here, so that all the assemblies within the
183         application domain's private binary directories can be
184         processed. Fixes bug #380546
185
186         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
187         mono_make_shadow_copy and made non-static. The decision whether
188         to shadow-copy an assembly is made based on its location - it's
189         copied if it's in one of the private application domain binary
190         directories and its different to the target file in the shadow
191         directory. Fixes bug #380546
192
193 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
194
195         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
196
197         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
198         types.
199
200         * reflection.c (mono_image_create_token): Handle 
201         Method/ConstructorOnTypeBuilderInst.
202         (resolve_object): Ditto.
203         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
204         so it can be called from resolve_object. Also handle the case when the inflated
205         class already has its methods setup.
206
207 2008-04-21  Martin Baulig  <martin@ximian.com>
208
209         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
210
211 2008-04-20  Geoff Norton  <gnorton@novell.com>
212
213         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
214         pointer dereference.
215
216 2008-04-15  Marek Habersack  <mhabersack@novell.com>
217
218         * appdomain.c (try_load_from): if IOMAP is in effect, call the
219         portability API to look up the assembly file. Fixes behavior in
220         situations when the application has a bin/ directory, but the
221         assembly search patch refers to Bin/ (and thus the requested file
222         name is Bin/SomeLibrary.dll). Fixes bug #379888
223
224 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
225
226         verify.c (mono_type_is_generic_argument): Extracted this check
227         from a dozen places to here.
228
229         verify.c: Fixed all issues related to boxing generic arguments
230         and their constraints.
231
232 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
233
234         verify.c (mono_class_interface_implements_interface): Fix win32 build.
235
236 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
237
238         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
239         isn't finished yet. Fixes #363447.
240
241 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
242
243         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
244         Fixes #346419.
245
246 2008-04-13  Jb Evain  <jbevain@novell.com>
247
248         * domain.c: update the 2.1 profile versions.
249         Merged from the Moonlight 2 branch.
250
251 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
252
253         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
254         mscorlibs for the non-refonly case as well.
255
256         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
257         in mono_assembly_load_from_full (). Fixes #378924.
258
259 2008-04-11  Geoff Norton  <gnorton@novell.com>
260
261         * icall.c: The global extern environ doesn't exist on Mac.  We
262         need to call NSGetEnviron instead.
263
264 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
265
266         verify.c: Add generic method constraint verification.
267
268 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
269
270         class.c (mono_class_inflate_generic_method_full): Add a long
271         explanation to the is_mb_open hack. Remove the FIXME.
272
273 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
274
275         * verify.c (mono_method_verify): Mark all unknown opcodes
276         as invalid. Mark jmp as unverifiable.
277
278 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
279
280         * verify.c: Add code to do type constraint verification on class instances.
281
282         * verify.c (mono_verifier_verify_class): Use the type constraint 
283         verification code.
284
285 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
286
287         * class.c (mono_class_get_field_default_value): Don't pass cindex
288         as hint to mono_metadata_get_constant_index. The local is not initialized
289         and should contain garbage most of the time. This could only work
290         with a lot of luck.
291
292 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
293
294         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
295
296 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
297
298         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
299
300         * class.c (mono_class_from_generic_parameter): Save the token of the
301         generic param in MonoClass::sizes.generic_param_token.
302
303         * reflection.c (mono_custom_attrs_from_class): If the class type is
304         VAR or MVAR retrieve the attributes of the generic param.
305
306 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
307
308         * class.c (mono_class_init): Do class verification if the verifier
309         is enabled.
310
311 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
312
313         * verify-internal.h: Added mono_verifier_verify_class.
314
315         * verify.c: Added mono_verifier_verify_class. It checks for
316         classes with explicit layout that have overlapping reference fields.
317
318         * pedump.c: Init the verifier state prior to verification. Fixed
319         command line arguments.
320
321 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
322
323         * Makefile.am: Added verify-internals.h, hopefully fix the build.
324
325 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
326
327         * verify-internals.h: Fix a warning.
328
329 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
330
331         * verify-internals.h: New header with the verifier configuration
332         extracted from mini.c.
333
334         * verify.c: Implemented the new functions exported by verify-internals.h.
335
336 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
337
338         * verify.c: Add proper verification of ckfinite.
339
340 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
341
342         * verify.c (do_conversion): Improved error message to something
343         more meanfull.
344
345         * verify.c (check_is_valid_type_for_field_ops): Fix to work
346         with primitive types.
347
348 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
349
350         * verify.c: Added tail prefix checking. Marked icall
351         as unverifible.
352
353 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
354
355         * verify.c: Fix the detection of branches to the middle
356         of an instruction.
357
358 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
359
360         * verify.c: Implemented verification of volatile. and
361         unaligned. prefix. Check if a type is valid after retrieving it.
362
363 2008-04-01  Dick Porter  <dick@ximian.com>
364
365         * process.c (process_get_fileversion): If there's no string block,
366         set the file language to en_US.  Fixes the other new part of bug
367         374600.
368
369 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
370
371         * class.c: New functions mono_method_can_access_field_full and
372         mono_method_can_access_method_full. They perform type visibility
373         and type site check.
374
375         * class-internal.h: Added exported functions.
376
377         * verify.c: Use new functions to implement proper visibility checks.
378
379 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
380
381         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
382
383 2008-03-28  Dick Porter  <dick@ximian.com>
384
385         * process.c (process_get_fileversion): Use the first language ID
386         we see, rather than insisting on an invariant language.  Fixes bug
387         374600.
388
389 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
390
391         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
392         the streams to fix reading of invalid memory later.
393
394         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
395         to ease debugging.
396
397 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
398
399         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
400         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
401
402 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
403         * threads.h: Added MonoThreadManageCallback type and
404         mono_thread_set_manage_callback prototype
405         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
406         (used to store the mono_thread_manage callback).
407         * threads.c: Added mono_thread_set_manage_callback, and handle
408         "MonoThread->manage_callback" in build_wait_tids.
409
410 2008-03-26  Dick Porter  <dick@ximian.com>
411
412         * process.c (process_get_fileversion): Set FileVersionInfo strings
413         to Empty when the resource doesn't have the particular info.
414         Fixes bug 355717.
415
416 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
417
418         * verify.c (mono_method_verify): Proper prefix validation.
419
420 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
421
422         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
423         itself in a separate argument instead of throwing them. Fixes #373448.
424
425         * appdomain.c: Bump corlib version.
426
427 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
428
429         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
430
431 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
432
433         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
434         version macros.
435
436 2008-03-20  Mark Probst  <mark.probst@gmail.com>
437
438         * generic-sharing.c, class-internals.h: Code for putting
439         reflection types into the runtime generic context.
440
441 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
442
443         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
444         Fixes #340662. 
445
446
447 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
448
449         * verify.c (VerifyContext): Added instruction prefix data to the struct.
450
451         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
452
453         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
454
455         * verify.c (do_cast): Let the result value keep the boxed status.
456
457         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
458
459 2008-03-17  Jb Evain  <jbevain@novell.com>
460
461         * reflection.c: when running on a 2.0 runtime, emit
462         unconditionally the #~ header version as 2.0, and the
463         CLI header version as 2.5, for symmetry's sake with csc.
464
465 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
466
467         * class.c: Remove the unused cache_interface_offsets stuff.
468
469         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
470         profiler.c: Fix warnings.
471
472 2008-03-16  Mark Probst  <mark.probst@gmail.com>
473
474         * generic-sharing.c, class-internals.h: Support for putting
475         methods into the runtime generic context.
476
477 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
478
479         * class.c (mono_class_setup_fields): Ignore calls made to this function for
480         classes which are generic instances of not-yet finished typebuilders. Fixes
481         #351172.
482
483         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
484
485 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
486
487         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
488
489         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
490         field, replace it with a hash table in MonoDynamicImage.
491
492         * reflection.c (inflate_mono_method): Access the generic definition object from
493         image->generic_def_objects instead of imethod->reflection_info.
494
495         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
496
497         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
498         
499         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
500         function in reflection.c so it is easier to keep in sync with the dynamic image
501         creation code.
502
503         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
504         mono_image_close ().
505
506 2008-03-15  Mark Probst  <mark.probst@gmail.com>
507
508         * class.c (mono_class_generic_sharing_enabled): Disable generic
509         sharing for all architectures except AMD64 and x86 to fix build.
510
511 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
512
513         * verify.c: Use the generic definition MonoGenericContext when available.
514         Remove code for checking generics instance compatibility in favor of
515         mono_class_is_assignable_from.
516
517 2008-03-14  Mark Probst  <mark.probst@gmail.com>
518
519         * marshal.c, marshal.h, metadata-internals.h, image.c,
520         wrapper-types.h: New wrapper for invoking a shared static method
521         without having to pass the runtime generic context argument.
522
523 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
524
525         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
526
527 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
528
529         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
530         
531         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
532         create a token from a FieldOnTypeBuilderInst.
533         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
534         (resolve_object): Ditto.
535
536         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
537         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
538
539 2008-03-14  Martin Baulig  <martin@ximian.com>
540
541         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
542
543         * debug-mono-symfile.h
544         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
545         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
546
547 2008-03-10  Martin Baulig  <martin@ximian.com>
548
549         * debug-mono-symfile.h
550         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
551         `lexical_block_table_offset'.
552         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
553         `lexical_blocks'.
554         (MonoSymbolFile): Added `version'.
555
556         * mono-debug.h
557         (MonoDebugLexicalBlockEntry): Removed.
558         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
559         `lexical_blocks'.
560
561         * mono-debug.c (mono_debug_add_method): Don't compute lexical
562         blocks here; the debugger now does this internally.
563
564 2008-02-27  Martin Baulig  <martin@ximian.com>
565
566         * object.c (mono_runtime_exec_main): Call
567         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
568         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
569
570 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
571
572         * verify.c (verify_type_compatibility_full): Allow native int to be converted
573         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
574
575 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
576
577         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
578         ldftn with a virtual method.
579
580 2008-03-13  Geoff Norton  <gnorton@novell.com>
581
582         * decimal.c:  Only include memory.h if the platform has it.
583
584 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
585
586         * assembly.c, class.c, metadata-internals.h: make sure public key
587         tokesns are compared in a case-insensitive way. Also, all
588         the lookups in the GAC use a lowercase public key token
589         (gaacutil already does the lowercasing on install). Fixes
590         bug #369541.
591
592 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
595         and return value.
596
597 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
598
599         * image.c: when someone loads a mscorlib from a file, return the
600         currently loaded mscorlib (fixes bug #369253).
601
602 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
603
604         * class.c: handle types with no parents by forcing them to have
605         System.Object as a parent and marking them as broken (this currently
606         allows the first part of bug #369173 to work as well, likely because
607         we don't check for typeload exceptions everywhere yet).
608
609 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
610
611         * class.c: more complete check that types belong to corlib
612         (fixes second part of bug #369173).
613
614 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
615
616         * generic-sharing.c:  Including glib.h for the MSVC builds to define
617           "inline" to "__inline" before including mono-membar.h.
618           
619         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
620           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
621           MSVC builds.
622
623         Contributed under MIT/X11 license.
624
625 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
626
627         * verify.c (do_invoke_method): Remove return type validation.
628
629         * verify.c (do_ret): Do return type validation at return site instead of
630         call site.
631
632 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
633
634         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
635
636         * verify.c: Some todos cleaned and improved a few error messages.
637
638 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
639
640         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
641
642 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
643
644         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
645         system types correctly.
646
647         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
648         function.
649
650 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
651
652         * assembly.c (build_assembly_name): Fix a warning.
653
654 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
655
656         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
657         the called function takes an object type argument. Fixes storing or
658         valuetypes across remoting as well as reducing memory usage.
659         * image.c, metadata-internals.h: remove now unused ldfld_remote and
660         stfld_remote wrapper caches.
661
662 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
663
664         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
665         is not found.
666
667         * reflection.c (mono_image_register_token): New helper function to save
668         a token->object mapping.        
669
670         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
671         managed code.
672
673         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
674         one dimension arrays. Fixes #367670.
675         (mono_reflection_get_type_internal): Ditto.
676
677 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
678
679         * marshal.c: mono_load_remote_field_new() always returns object.
680         so use the proper signature (fixes bug #366445).
681
682 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
683         
684         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
685         add an 'inline_failure' flag instead.
686
687 2008-03-04  Mark Probst  <mark.probst@gmail.com>
688
689         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
690         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
691         contains the location of "this", used for exception handling.
692
693 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
694
695         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
696         their size on all platforms for perf reasons.
697
698 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
699
700         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
701         object-internal.h
702
703         * object-internal.h: Same.
704
705 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
706
707         * reflection.h: Fix the build I just broke.
708
709 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
710
711         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
712         Test if a token is valid, this remove explicit usage of 
713         MonoDynamicImage::tokens from the verifier code.
714
715         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
716
717         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
718         instead of direct access to MonoDynamicImage::tokens.
719
720 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
721
722         * verify.c (token_bounds_check): Fix the build I just broke.
723
724 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
725
726         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
727
728         * verify.c (verifier_load_method): Fixed the errors message.
729
730         * verify.c (mono_method_verify): Fixed a debug message.
731
732 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
733
734         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
735         mono-perfcounters.h, class-internals.h: support for predefined
736         writable counters, query of categories and counters, bugfixes.
737
738 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
739
740         * verify.c (do_refanytype): Verify the refanytype opcode.
741
742         * verify.c (mono_method_verify): Use do_refanytype.
743
744 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
745
746         * verify.c (do_mkrefany): Verify the mkrefany opcode.
747
748         * verify.c (mono_method_verify): Use do_mkrefany.
749
750 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
751
752         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
753         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
754         implementation.
755
756 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
757
758         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
759         the type load exception.
760
761 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * verify.c: Added a few FIXME for method signatures
764
765         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
766         of mono_method_get_signature and get vararg call working. Removed unused
767         checks for return value.
768
769         * verify.c (do_refanyval): Verify the refanyval opcode.
770
771         * verify.c (mono_method_verify): Implemented verification of arglist and
772         use do_refanyval.
773
774 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
775
776         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
777         vtypes to marshal.c.
778
779         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
780         it works for AOT as well.
781
782 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
783
784         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
785         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
786         the system time is adjusted.
787
788 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
789
790         * icall.c, icall-def.h: use the new time functions (fixes the
791         non-monotonic behaviour of TickCount).
792
793 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
794
795         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
796         it breaks the build.
797         
798         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
799         cattr is not finished yet.
800
801 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * verify.c: Proper token validation for field, method and type.
804
805 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
806
807         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
808
809         * loader.c (method_from_memberref): Generate type load error instead of method missing
810         if the type is not found.
811
812 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
813
814         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
815         some of the conversions caused the generation of a marshal directive exception.
816
817 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
818
819         verify.c: Report which exception should be thrown by the JIT.
820         Added a lot of FIXME notes.
821
822 2008-02-22  Mark Probst  <mark.probst@gmail.com>
823
824         * generic-sharing.c: Runtime generic context slots are not
825         instantiated on init anymore.  Instead, provide function to do the
826         instantiating on demand.
827
828         * class-internals.h: Added vtable to runtime generic context.
829         Macros for encoding direct and indirect slot offsets in one
830         guint32.
831
832 2008-02-21  Mark Probst  <mark.probst@gmail.com>
833
834         * object.c, generic-sharing.c: Moved some generic sharing code
835         from object.c to generic-sharing.c.
836
837         * generic-sharing.c: Added support for extensible runtime generic
838         context.
839
840         * metadata-internals.h: Two new hash tables in MonoImage for
841         extensible runtime generic context support.
842
843         * domain.c: Unregister generic vtables upon domain unloading.
844
845         * image.c: Destroy new hash tables upon image unloading.
846
847         * metadata.c: Unregister generic subclasses upon image unloading.
848
849         * class-internals.h: New data structure for runtime generic
850         context template.  New fields in the runtime generic context for
851         extensible part.
852
853         * Makefile.am: Added generic-sharing.c.
854
855 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
856
857         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
858         there is a pending loader exception, raise it.
859
860         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
861         same.
862
863         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
864         same.
865
866         Fixes #363450.
867
868 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
869
870         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
871
872         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
873         
874         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
875         ref-only requests for compatibility with MS.
876
877 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
878
879         * reflection.c (mono_custom_attrs_from_method): Don't silently
880         return an empty list for generic method instances.
881         (mono_custom_attrs_from_param): Likewise.
882
883 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
884             Raja R Harinath  <harinath@hurrynot.org>
885
886         Fix #354757
887         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
888         * class.c (mono_class_inflate_generic_method_full): Initialize it
889         when a fully-open method is instantiated.
890         * metadata.c (inflated_method_equal, inflated_method_hash): Update
891         to new field.
892         * reflection.c (inflate_mono_method): Don't create a temporary context.
893
894 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
895
896         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
897         Compute correct value, to prepare for imethod->reflection_info going away.
898
899 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
900
901         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
902
903 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
904
905         * verify.c: Implement skip visibility flag.
906
907 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
908
909         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
910         which contains an extra field to tell the kind of exception that should be thrown.
911
912         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
913
914 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
915
916         * loader.c (mono_method_get_param_names): Initialize 'klass' after
917         'method' is updated.
918
919 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
920
921         * class.c (mono_class_layout_fields): Set class->min_align for classes using
922         explicit layout as well. Fixes #360375.
923
924 2008-02-11  Geoff Norton  <gnorton@novell.com>
925
926         * loader.c: Guard and dereference against inflated generic methods
927
928 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
929
930         * class.c: Include Retargetable spec in assembly name.
931         * assembly.c: Always include PublicKeyToken spec in assembly name
932         (with value "null" if assembly is not signed), and include
933         Retargetable spec.
934         * icall-def.h: Added icall for Assembly.get_fullname.
935         * icall.c: Added icall returning the fullname of an assembly.
936
937 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
938
939         * class.c (mono_class_setup_vtable_general): Add a missing call to
940         mono_class_setup_methods () which is needed in the AOT case.
941
942 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
943
944         * verify.c (mono_type_get_stack_name): Added. Return the name for the
945         stack type of the given MonoType.
946
947         * verify.c (verify_type_compatibility_full): Handle the void type.
948
949         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
950         way stack merging works.
951
952         * verify.c (store_local): Improved verification message.
953
954         * verify.c (do_branch_op): If the merging is invalid, the method
955         is unverifiable and not invalid. Improved error message.
956
957         * verify.c (merge_stacks): Properly merge a boxed valuetype and
958         a reference type diferent than System.Object. Improved error
959         message.
960
961 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
962
963         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
964
965         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
966         type of an enum even if the argument is byref.
967
968         * verify.c: Replace all explicit uses of enumtype and enum_basetype
969         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
970
971         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
972
973         *verify.c (verify_type_compatibility_full): Make enum types
974         compatible with their base types.
975
976         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
977         types are compatible for the special case of a boxed valuetype and
978         System.Object.
979
980         * verify.c (verify_stack_type_compatibility): The function
981         is_compatible_boxed_valuetype was extracted from here.
982
983         * verify.c (push_arg): Only set ctx->has_this_store if the method
984         is not static.
985
986         * verify.c (do_ldelem): Fixed a typo in an error message and added
987         strict check for mixing int32 and native int as the array type
988         and ldelem type.
989
990         * verify.c (merge_stacks): Consider boxed valuetypes in the
991         compatibility checks.
992
993 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
994         * profiler.h: (MonoGCEvent): Added start-stop the world events.
995
996 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
997         *class.c: use_new_interface_vtable_code: renamed the env var to have
998         a "MONO_" prefix, and fix the logic to enable it by default.
999
1000 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
1001         *class.c:
1002         mono_class_setup_vtable_general: rewrote the way in which interface
1003         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
1004         makes the code more maintainable.
1005         For now the old code is still there, and can be activated setting
1006         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
1007
1008 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * verify.c: guarded some debug functions around and #ifdef.
1011
1012         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
1013
1014 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
1017         changes for now since they seem to break too many things.
1018
1019 2008-02-05  Mark Probst  <mark.probst@gmail.com>
1020
1021         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
1022         mono_marshal_find_nonzero_bit_offset): Added macro and function
1023         for finding the byte- and bit-offset of a bitfield within a
1024         struct.
1025
1026 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
1029         (mono_marshal_get_struct_to_ptr): Ditto.
1030
1031         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
1032         cctor_signature.
1033
1034 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
1035
1036         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
1037         between methods for non-corlib types.
1038
1039 2008-02-02  Geoff Norton  <gnorton@novell.com>
1040
1041         * loader.c (mono_method_get_param_names): Populate the parameter name for 
1042         generic parameters as well. (Fixes #342536)
1043
1044 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
1045
1046         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
1047
1048         * verify.c (do_invoke_method): Fix for calling with byref structs.
1049
1050         * verify.c (do_cast): push a boxed value type based on the type token and not
1051         the type of stack.
1052
1053 2008-01-31  William Holmes  <billholmes54@gmail.com>
1054
1055         * process.c (process_module_string_read): Check the size returned form 
1056           VerQueryValue to avoid out of memory exception. 
1057
1058 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
1061         Handle properly modules which are not in the moduleref table. Fixes
1062         #356938.
1063
1064 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
1067         the dynamic case which is now in managed code.
1068         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
1069
1070         * marshal.c (mono_string_to_bstr): Fix a warning.
1071         (init_com_provider_ms): Ditto.
1072
1073         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
1074
1075         * exception.c (mono_get_exception_out_of_memory): New helper function.
1076
1077 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
1078
1079         * marshal.c: Add support for BSTR marshalling
1080         using other COM systems.
1081
1082         Code is contributed under MIT/X11 license.
1083
1084 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
1085
1086         * object.c (mono_runtime_invoke_array): reverted previous
1087         commit as it breaks the build.
1088
1089 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
1090
1091         * object.c (mono_runtime_invoke_array): Verify arguments for
1092         invalid types. Fixes #348522.
1093
1094 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
1095
1096         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
1097         non-final virtual calls using call. 
1098
1099         * verify.c (do_invoke): fixed some TODOs.
1100
1101         * verify.c (push_arg): set has_this_store for "ldarga 0".
1102
1103 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
1104
1105         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
1106         which belong to an inflated class. Fixes #356531.
1107
1108 2008-01-26  Robert Jordan  <robertj@gmx.net>
1109
1110         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
1111         which resort to FindFirstFile when a certain error condition
1112         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
1113         Code is contributed under MIT/X11 license.
1114
1115 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
1116
1117         * marshal.c (emit_marshal_string): Fix out string marshalling
1118         to use specified encoding. Fixes #323900.
1119
1120         Code is contributed under MIT/X11 license.
1121
1122 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
1123
1124         * class.c (mono_class_inflate_generic_method_full): Don't modify
1125         iresult->context after cache check.
1126
1127 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
1128
1129         * class.c (mono_class_inflate_generic_method_full): Change the
1130         struct assignments to memcpy for better visibility and add some comments.
1131
1132 2008-01-23  Dick Porter  <dick@ximian.com>
1133
1134         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
1135         procedure, and make it work on windows.
1136
1137 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
1138
1139         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
1140         a MonoReflectionTypeBuilder since it is always of that type.
1141
1142         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
1143
1144         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
1145
1146         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
1147         
1148         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
1149
1150         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
1151
1152         * reflection.c (mono_reflection_create_runtime_class): Remove already created
1153         instantiations from the type cache.
1154
1155 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
1158
1159         * verify.c (do_unbox_value): push a controled mutability managed pointer.
1160
1161 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1162
1163         * verify.c (do_ldstr): added, verifies if the #US token is valid.
1164
1165         * verify.c (mono_method_verify): removed old TODO
1166
1167 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1168
1169         * verify.c (do_newobj): add visibility check.
1170
1171 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
1172
1173         * verify.c (do_load_function_ptr): add visibility check.
1174
1175 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
1176         *class.c:
1177         mono_generic_class_get_class: hook profiler events.
1178         mono_field_get_offset: added to support heap-shot in the new profiler.
1179         *class.h: exported mono_field_get_offset.
1180         * reflection.c:
1181         mono_reflection_setup_internal_class: hook profiler events.
1182
1183 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
1184
1185         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
1186         argument here too and use it to avoid checking for pending exceptions if 
1187         possible.
1188
1189 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
1190
1191         * assembly.c (build_assembly_name): add arg for passing the assembly
1192         flags. Do not consider a PublicKey with value "null" valid.
1193         (mono_assembly_name_parse_full): added boolean argument that will be
1194         set if the assembly name contains a PublicKeyToken spec. Added support
1195         for the Retargetable spec for which only Yes or No are allowed as valid
1196         value. Consider assembly name invalid if Retargetable spec is set, but
1197         either version, culture or public key (token) are not specified.
1198         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
1199         with implementation in assembly.c.
1200         * icall.c (fill_reflection_assembly_name): also copy assembly flags
1201         from MonoAssemblyName.
1202         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
1203         introduced argument for mono_assembly_name_parse_full to know if the
1204         assembly name has a PublicKeyToken spec, and if it has instruct
1205         fill_reflection_assembly_name to use default value for keyToken (if
1206         PublicKeyToken is null).
1207
1208 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1209
1210         * verify.c (mono_method_verify): fixed ovf ops with
1211         float values. They are unverifiable now.
1212
1213 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
1214
1215         * class.c (set_failure_from_loader_error): add BadImageException to the
1216         list of exceptions that can cause a type to fail to load.
1217
1218         * class.c (mono_class_get_exception_for_failure): same.
1219
1220 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
1221
1222         * verify.c (in_any_exception_block): added, check if offset
1223         is part of any exception handling clause.
1224
1225         * verify.c (get_stack_type): added VAR and MVAR types.
1226
1227         * verify.c (do_stobj): better error messages.
1228
1229         * verify.c (do_cpobj): added, check cpobj.
1230
1231         * verify.c (do_initobj): added, check initobj.
1232
1233         * verify.c (do_sizeof): added, check sizeof.
1234
1235         * verify.c (do_localloc): added, check localloc.
1236
1237         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
1238
1239 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
1242         save_lmf/restore_lmf opcodes.
1243
1244         * threads.c (mono_threads_install_notify_pending_exc): New function to
1245         install a callback notifying the JIT there is a pending exception on a thread.
1246         (mono_thread_request_interruption): Call the new callback.
1247         (mono_thread_get_and_clear_pending_exception): New function to return the
1248         exception pending on a thread.
1249
1250         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
1251         to turn off checking for pending exceptions.
1252         (mono_marshal_get_native_wrapper): Ditto.
1253
1254 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * threads-types.h: Get rid of the unnecessary extern declarations.
1257
1258 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
1259
1260         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
1261         return field from parent class if not private.
1262         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
1263         returns fields from parent class if they are not private.
1264         (method_nonpublic): added function to determine if a given method
1265         should be considered non-public. Returns false for private methods
1266         on parent class, and internal methods from parent on the 1.0 profile.
1267         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
1268         use method_nonpublic function to determine whether method should be
1269         returned.
1270         (property_accessor_public): use newly introduced method_nonpublic
1271         function to determine whether accessor is non-public. 
1272         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
1273         event from parent class if not private. Only return static event if
1274         Static flag is set, and only return static event from parent class if
1275         FlattenHierarchy flag is set.
1276         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
1277         include non-private events from parent class.
1278
1279 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
1282         warning.
1283
1284 2008-01-16  Wade Berrier <wberrier@novell.com>
1285
1286         * security.c: Add assembly.h header to appease some warnings
1287
1288 2008-01-16  Dick Porter  <dick@ximian.com>
1289
1290         * process.c (process_module_string_read): Remove trailing null
1291         when saving string.
1292
1293 2008-01-16  Mark Probst  <mark.probst@gmail.com>
1294
1295         * class-internals.h: A new data structure describing the layout of
1296         a runtime generic context (MonoRuntimeGenericContextTemplate).
1297
1298         * metadata-internals.h: Added a hash table to MonoDomain that maps
1299         from open generic classes to their runtime generic context
1300         templates.
1301
1302         * object.c: Building of the runtime generic context, including
1303         proper handling of generic type arguments of superclasses.
1304         Building of the runtime generic context according to the template.
1305
1306 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * class.c (mono_class_setup_fields): Set field.count for generic instances.
1309         Fixes #350856.
1310
1311         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
1312         mono_portability_find_file (). Fixes #325466.
1313         (mono_image_get_public_key): Fix a warning.
1314
1315 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
1318         Fixes #353550.
1319         (mono_class_from_name_case): Ditto.
1320
1321 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
1322
1323         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
1324           common storage for the tables used in the System/NumberFormatter class.
1325
1326 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
1329
1330 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
1331
1332         * verify.c (get_boxable_mono_type): check if the token is valid.
1333
1334         * verify.c (set_stack_value): changed to add an error if an
1335         invalid type is set on stack. Changed all callers due to signature change.
1336
1337         * verify.c (do_stobj): implement stobj validation.
1338
1339 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
1340
1341         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
1342         set container->is_method, it was set earlier.
1343
1344         * metadata.c (type_in_image): Handle MVARs which belong to not finished
1345         generic methods.
1346
1347         * reflection.c (mono_reflection_initialize_generic_parameter): Set
1348         is_method of the generic container to TRUE for methods.
1349
1350 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
1351
1352         * metadata.c (type_in_image): Handle type parameters properly.
1353
1354         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
1355         memory ownership of this structure.
1356
1357 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
1358
1359         * verify.c (get_boxable_mono_type): make typedref types been just
1360         unverifiable. check for void type.
1361
1362         * verify.c (do_unbox_any): added, verify opcode unbox.any.
1363
1364         * verify.c (do_load_function_ptr): accept method spec tokens.
1365
1366 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * marshal.c (mono_class_native_size): Always set *align even if this is called
1369         recursively.
1370
1371 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
1372
1373         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
1374         out-of-date.
1375
1376 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
1377
1378         * verify.c: removed some old unused tables. A huge bunch of small fixes
1379         to things found while testing the verifier with mono basic.
1380
1381         * verify.c (dump_stack_value): dump null literal flag to.
1382
1383         * verify.c (verify_type_compatibility_full): fix comparison
1384         for types that have a generic super type.
1385
1386         * verify.c (verify_stack_type_compatibility): fix compatibility
1387         between null literals and reference types. fix compatibility between
1388         boxed valuetypes and object. fix corner case test for enums.
1389
1390         * verify.c (do_cmp_op): proper verification of cgt.un in case
1391         of reference types.
1392
1393         * verify.c (do_invoke_method): fix error message.
1394
1395         * verify.c (do_store_indirect
1396
1397         * verify.c (check_is_valid_type_for_field_ops): proper verification
1398         of managed pointers to valuetypes and boxed valuetypes. proper verification
1399         of null literals.
1400
1401         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
1402         allow token to be a reference type.
1403
1404         * verify.c (do_cast): proper handling of boxes valuetypes.
1405
1406         * verify.c (do_stelem): proper handling of storing a boxed valuetype
1407         in object[].
1408
1409         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
1410         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
1411         fixed the decoding of unbox_any
1412
1413 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
1416
1417 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
1418
1419         * verify.c (do_newobj): do delegate verification.
1420
1421         * verify.c (verify_delegate_compatibility): perform delegate
1422         verification.
1423
1424         * verify.c (verify_ldftn_delegate): perform tests related to
1425         ldftn delegates.
1426
1427         * verify.c (mono_delegate_signature_equal): perform the
1428         slightly diferent signature comparison required by delegates.
1429
1430         * metadata.c (mono_metadata_type_equal_full): added and exported
1431         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
1432         allows signature only comparison.
1433
1434         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
1435         as MONO_INTERNAL.
1436
1437 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1438
1439         * verify.c: added a bunch of stack_slot_* functions to
1440         make access to stack slot type easier. This is required to
1441         allow optional flags, like null literal, boxed value and
1442         this pointer.
1443         All access paths to IlStackDesc::stype have been changed 
1444         to use these new funcions.
1445         Removed a bunch of unused functions and cleared all warnings.
1446         This patch introduces the usage of the this pointer and 
1447         boxed value flags.
1448
1449 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
1452
1453 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
1454
1455         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
1456         match managed version.
1457
1458         * appdomain.c: Bump corlib version.
1459         
1460         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
1461         argument.
1462
1463 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
1464
1465         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
1466         Set public key token to zero-length byte array if assembly is not
1467         strongnamed.
1468
1469 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
1470
1471         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
1472         writing a vtype array elem.
1473
1474 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
1475
1476         * assembly.c (build_assembly_name): return FALSE if length of token is
1477         not 16 (if not "null").
1478         (mono_assembly_name_parse_full): return FALSE if value of version,
1479         culture, token or key is 0.
1480         * icall.c (fill_reflection_assembly_name): add boolean arguments to
1481         specify whether public key and public key token must be set to default
1482         value (zero-length byte array) if not available. Set versioncompat to
1483         SameMachine. If public key is available or the default is set, then
1484         set PublicKey flag.
1485         (ves_icall_System_Reflection_Assembly_FillName): if no public key
1486         is available, use empty byte array as default value. On the 2.0
1487         profile, use default value for public key token if not set.
1488         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
1489         profile, use default value for public key if not set. On the 2.0
1490         profile, use default value for public key token if not set.
1491         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
1492         default values for public key and public key token.
1493
1494 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
1497         field to keep it in synch with the managed object.
1498
1499         * marshal.c (emit_marshal_object): Add support for byref marshalling of
1500         delegates. Fixes #351520.
1501
1502         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
1503         contains defined memory.
1504         
1505         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
1506
1507         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
1508         
1509         * sgen-gc.c (check_consistency): New helper function to do a consistency check
1510         of the GC data structures.
1511
1512         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
1513
1514         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
1515         
1516         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
1517         barrier.
1518         (mono_array_clone_in_domain): Ditto.
1519         (mono_array_clone_in_domain): Ditto.
1520
1521         * threads.c (start_wrapper): Register the thread start argument as a GC root.
1522         (cache_culture): Use a write barrier.
1523
1524         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
1525         (ves_icall_get_property_info): Ditto.
1526
1527         * object.h (MONO_STRUCT_SETREF): New macro.
1528
1529         * class-internals.h (MonoStats): Add some GC statistics.
1530
1531         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
1532
1533 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
1534
1535         * exception.c (mono_exception_from_name_two_strings):
1536         Break from loop after method is found.
1537
1538 2008-01-04  Dick Porter  <dick@ximian.com>
1539
1540         * process.c (process_module_string_read): Rename variable to
1541         reflect correct usage, after fixing bug 345972.
1542
1543 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
1544
1545         * verify.c (mono_type_create_fnptr_from_mono_method): 
1546         created a MonoType function pointer instance to be used during
1547         verification. The verifier releases this memory at end.
1548
1549         * verify.c (mono_method_is_constructor): extracted repeated
1550         checks for constructor into a single class.
1551
1552         * verify.c (do_push_field): use new extracted method
1553         for constructor check.
1554
1555         * verify.c (do_newobj): same.
1556
1557         * verify.c (do_ldftn): renamed to do_load_function_ptr
1558         and make it verify ldvirtftn too.
1559
1560         * verify.c (mono_method_verify: proper verification
1561         of ldvirtftn. release created MonoMethod instances.
1562
1563 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * verify.c (token_bounds_check): added.
1566
1567         * verify.c (do_ldftn): added.
1568
1569         * verify.c (mono_method_verify): proper verificartion of ldftn.
1570
1571 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
1572
1573         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
1574         than the table row count. It's the resposibility of the caller to
1575         make the bounds check and raise the correct error.
1576
1577         * metadata.c (mono_metadata_decode_row_col): Same.
1578
1579         * loader.c (mono_get_method_from_token): perform bounds check
1580         on token for methoddef table.
1581
1582 2007-12-29  Miguel de Icaza  <miguel@novell.com>
1583
1584         * icall.c
1585         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
1586         assert into a negative result, the managed code already coped with
1587         that.
1588
1589         Some folks on Windows reported this error. 
1590
1591 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
1592
1593         * appdomain.c: Bump corlib version.
1594         * icall.c:
1595         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
1596         CultureInfo.CreateCulture to create CultureInfo for name.
1597         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
1598         create CultureInfo for name. Fixes bug #347174.
1599
1600 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
1601
1602         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
1603         flags.
1604
1605         * verify.c (is_valid_branch_instruction): allow branching to the
1606         first instruction of the protected block.
1607
1608         * verify.c (is_valid_cmp_branch_instruction): same.
1609
1610         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
1611         avoid double initialization.
1612
1613         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
1614         detect which cases the eval stack should just be copied.
1615
1616         * verify.c (mono_method_verify): check if the eval stack
1617         is empty when entering a protected block.
1618
1619 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
1620
1621         * verify.c: added is_clause_in_range, is_clause_inside_range,
1622         is_clause_nested and verify_clause_relationship. They perform
1623         the verifications stated in P1 12.4.2.7.
1624
1625         * verify.c (mono_method_verify): remove some unused variables,
1626         add the new exception clause checks, add instruction border
1627         checks for protected block start/end, improved some error 
1628         messages and fixed a bug in the way invalid instruction access
1629         is detected.
1630
1631 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
1634         from GC 7.0 if available.
1635
1636         * object.c: Remove an unused define.
1637         
1638         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
1639
1640         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
1641
1642         * null-gc.c (mono_gc_make_descr_for_array): Implement.
1643
1644         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
1645
1646         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
1647         to take the same arguments as the other make_descr functions.
1648
1649         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
1650
1651         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
1652         directly.
1653
1654         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
1655         mini.c.
1656
1657         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
1658         call to boehm-gc.c.
1659
1660         * boehm-gc.c (mono_gc_register_root): Fix a warning.
1661
1662         * null-gc.c (mono_gc_register_root): Fix a warning.
1663
1664         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
1665
1666         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
1667         (mono_gc_base_init): Call GC_init ().
1668
1669         * null-gc.c: Define mono_gc_register_root () as a no-op.
1670
1671         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
1672
1673 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
1674
1675         * verify.c: add prototype for merge_stacks at top
1676
1677         * verify.c (do_switch): added.
1678
1679         * verify.c (merge_stacks): on some cases the stack merging
1680         was not happening properly. Unequal stack sizes at merge
1681         points should be invalid.
1682
1683         * verify.c (mono_method_verify): added more debug info on stack state.
1684         verify switch properly.
1685
1686 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * method-builder.h: New file, moved the mono_mb_ declarations here from 
1689         marshal.h.
1690
1691         * boehm-gc.c marshal.c: Include method-builder.h.
1692
1693         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
1694
1695         * marshal.c: Remove some code which is now in method-builder.c.
1696
1697 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
1698
1699         * method-builder.c: New file, extraction of the method builder functionality 
1700         from marshal.c.
1701
1702         * marshal.c: Move the mb functions into method-builder.c.
1703
1704         * marshal.h marshal.c: Export some mono_mb_... functions.
1705
1706         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
1707
1708         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
1709         the caller.
1710
1711         * class.c (mono_class_get_full): Check the token type in the dynamic case.
1712
1713         * loader.c (mono_field_from_token): Ditto.      
1714
1715         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
1716         type as well.
1717         
1718         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
1719         Fixes #342565.
1720
1721         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
1722         a helper function for setting it.
1723
1724         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
1725
1726         
1727         * assembly.c: Significally simplify code now that referenced assemblies are 
1728         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
1729
1730         * threads.h: Don't include  the internal threads-types.h header file. Fixes
1731         #349952.
1732
1733 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
1734
1735         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
1736         instructions that were target of branches or are at protected block boundaries.
1737
1738         * verify.c (in_same_block): handle filter clauses.
1739
1740         * verify.c (is_valid_branch_instruction): added. checks the target of
1741         instructions br or brtrue/false.
1742
1743         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
1744         binary branch instructions such as beq and bge.
1745
1746         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
1747         and made it pin the instruction as been part of the exception block.
1748
1749         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
1750         of in_same_block.
1751
1752         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
1753         of in_same_block.
1754
1755         * verify.c (do_ret): ret from a protected block is unverifiable and
1756         not invalid.
1757
1758         * verify.c (do_static_branch): verify br and br.s instructions.
1759
1760         * verify.c (merge_stacks): add extra param to support detection
1761         of branches in the middle of instructions.
1762         
1763         * verify.c (mono_method_verify): verify branches and exception blocks
1764         that target the middle of instructions. Proper verification of br and br.s.
1765
1766 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
1769         skip_visibility field.
1770         (reflection_methodbuilder_from_dynamic_method): Ditto.
1771
1772         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
1773         registrations. Fixes #348193.
1774
1775         * threads.h: Move the internal mono_thread_get_pending_exception () to
1776         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
1777
1778 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
1781         icall registration. Fixes #348193.
1782
1783         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
1784         for corlib classes into object. Fixes #349621.
1785
1786 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
1787
1788         * icall.c (property_accessor_nonpublic): new function to determine
1789         whether an accessor allows a property to be considered non-public.
1790         Returns false for private accessor(s) from parent class, and internal
1791         accessor(s) from parent on 2.0 profile (and higher).
1792         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
1793         to determine whether property should be included if NonPublic flag
1794         is set. Fixes bug #349078.
1795
1796 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
1797
1798         * verify.c (init_stack_with_value): added.
1799
1800         * verify.c (mono_method_verify): extracted common
1801         code for exception initialization into init_stack_with_value.
1802
1803         * verify.c (mono_method_verify): initialize the exception
1804         for handler clauses as well.
1805
1806         * verify.c (mono_method_verify): fix the exception clause
1807         ordering rules, it should use handler end offset and not
1808         start offset.
1809
1810 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
1811
1812         * rawbuffer.c: remove useless warning.
1813
1814 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
1815
1816         * threads.h, threads-types.h: move functions to the correct header
1817         (fixes bug#349952).
1818
1819 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1820
1821         * verify.c (mono_method_verify): proper verification
1822         of exception handling clauses ranges and fallthru in
1823         and out of protected blocks.
1824
1825 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1826
1827         * verify.c (mono_method_verify): fixed compilation issue.
1828
1829 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1830
1831         * verify.c (mono_method_verify): a printf slipped in, changed
1832         to use verifier debug macro.
1833
1834 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
1835
1836         * verify.c (is_correct_leave): check for filter clauses.
1837
1838         * verify.c (do_filter): added.
1839
1840         * verify.c (mono_method_verify): property verification of leave.
1841
1842
1843 2007-12-18  Mark Probst  <mark.probst@gmail.com>
1844
1845         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
1846         Win32 build, until we figure out how to do the proper thing on
1847         Win32.
1848
1849 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
1852         by the previous patch.
1853         
1854         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
1855         the assembly resolve handler for refonly assemblies.
1856
1857 2007-12-17  Mark Probst  <mark.probst@gmail.com>
1858
1859         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
1860         Make sure only one thread is allowed to commence shutdown, and
1861         don't allow new threads to be started once shutdown is in
1862         progress.
1863
1864 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
1865
1866         * verify.c (is_correct_endfilter): added.
1867
1868         * verify.c (is_unverifiable_endfilter): added.
1869
1870         * verify.c (do_endfilter): added.
1871
1872         * verify.c (mono_method_verify): property verification of endfilter
1873         and fixed a corner case or endfinally.
1874
1875 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
1876
1877         * verify.h: new flags to support fail fast of unverifiable code and
1878         do non-strict verification. Non-strict verification is required to
1879         have MS runtime compatibility. There are a huge amount of unverifiable
1880         code that it accepts as verifiable. The strict mode verifies the code
1881         as the specs says.
1882         Non-strict mode will be required in cases where code needs to be
1883         accepted as verifiable but fails under strict mode.
1884
1885         * pedump.c: added support to fail fast and non-strict verification.
1886
1887         * verify.c: added support for both fail fast and non-strict verification.
1888
1889 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
1890
1891         * verify.c (is_correct_endfinally): added.
1892
1893         * verify.c (mono_method_verify): property verification of endfinally.
1894
1895 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1896
1897         * verify.c (in_any_block): check for filter clauses.
1898
1899         * verify.c (is_correct_rethrow): added.
1900
1901         * verify.c (mono_method_verify): property verification of rethrow.
1902
1903         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
1904
1905 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1906
1907         * verify.c (do_throw): added.
1908
1909         * verify.c (mono_method_verify): property verification of throw
1910
1911 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
1914         assemblies. Fixes #346425.
1915
1916 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
1917
1918         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
1919         FieldBuilders.
1920
1921         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
1922
1923         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
1924         prevent asserts when this is called with a token which might not be valid.
1925
1926         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
1927         lookup_dynamic_token_class with valid_token == FALSE.
1928
1929         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
1930
1931         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
1932
1933         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
1934         
1935 2007-12-10  Mark Probst  <mark.probst@gmail.com>
1936
1937         * gc.c: Don't delay threadpool thread finalization unless Mono is
1938         shutting down.
1939
1940 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1941
1942         * threads.c: turn an assert into a non-fatal warning.
1943
1944 2007-12-09  Robert Jordan  <robertj@gmx.net>
1945
1946         * icall.c (GetVirtualMethod): Add missing argument validation.
1947
1948 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1949
1950         * verify.c (do_cast): added.
1951
1952         * verify.c (mono_method_verify): property verification of castclass and isinst.
1953
1954
1955 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1956
1957         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
1958
1959         * verify.c (do_stelem): added.
1960
1961         * verify.c (mono_method_verify): property verification of stelem.X.
1962
1963 2007-12-07  Mark Probst  <mark.probst@gmail.com>
1964
1965         * class.c, class-internals.h: Introduce an environment variable
1966         (MONO_GENERIC_SHARING) through which the extent of generic code
1967         sharing can be controlled (share all classes, share only corlib
1968         classes, or share nothing).
1969
1970         * object.c: Only create runtime generic context for classes for
1971         which sharing is enabled.
1972
1973 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1974
1975         * verify.c (do_ldelem): refactor it to work with ldelem.any.
1976
1977         * verify.c (mono_method_verify): property verification of ldelem.any.
1978
1979 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1980
1981         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
1982         added ldelem.X opcodes.
1983
1984         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
1985
1986         * verify.c: proper verification of ldelem.X 
1987
1988 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
1991
1992 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1993
1994         * verify.c (mono_method_verify): null literal requires special handling,
1995         the value pushed on stack need to be flagged as so.
1996
1997         * verify.c (do_ldelema): Verify ldelema properly.
1998
1999 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
2000
2001         * verify.c: Verify ldlen properly.
2002
2003 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
2006         to the target object's type. Fixes #346160.
2007
2008 2007-12-05  Dick Porter  <dick@ximian.com>
2009
2010         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
2011         Solaris needs the same workaround as BSD-derived systems.  Fixes
2012         bug 323524, patch by Burkhard Linke
2013         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
2014
2015 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
2016
2017         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
2018         handle to use when error dialog is shown; otherwise, update mask
2019         to show no error dialog when an error occurs.
2020
2021 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
2024
2025         * class.c (mono_class_get_field_default_value): New helper function to initialize
2026         field->def_type and field->data.
2027
2028 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
2029
2030         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
2031         the general one.
2032
2033         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
2034
2035         * marshal.c: Avoid depending on delegate->method_info being set.
2036
2037         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
2038         
2039         * object.c (mono_delegate_ctor): Set delegate->method.
2040
2041         * object-internals.h (struct _MonoDelegate): Add 'method' field.
2042
2043         * appdomain.c: Bump corlib version.
2044
2045 2007-11-27  Raja R Harinath  <harinath@gmail.com>
2046
2047         * metadata.c (mono_generic_inst_equal_full): Short-circuit
2048         equality check if we're comparing canonicalized MonoGenericInsts.
2049
2050 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * class.c (generic_array_methods): Call mono_class_setup_methods () before
2053         accessing class->methods.
2054
2055 2007-11-22  Dick Porter  <dick@ximian.com>
2056
2057         * threads.c: Ensure that the synch_cs is set before trying to use
2058         it.
2059
2060 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
2061
2062         * profiler.c: r89126 broke the statistial profiler, unbreak.
2063
2064 2007-11-22  Martin Baulig  <martin@ximian.com>
2065
2066         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
2067
2068         * mono-debug.c
2069         (mono_debug_debugger_version): Bump to 3.
2070         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
2071         -> mono_debugger_class_initialized().
2072
2073         * mono-debug-debugger.c
2074         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
2075
2076         * class.c
2077         (mono_debugger_start_class_init_func): Removed.
2078         (mono_debugger_class_loaded_methods_func): Added.
2079         (mono_class_setup_methods): Call it here.
2080
2081 2007-11-22  Martin Baulig  <martin@ximian.com>
2082
2083         * mono-debug.c
2084         (mono_debug_add_delegate_trampoline): New public method.
2085         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
2086
2087         * mono-debug.h
2088         (MonoSymbolTable): Added `global_data_table'.
2089         (MonoDebuggerTypeKind): Removed.
2090
2091 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
2094         these methods.
2095
2096         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2097         
2098 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
2099
2100         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
2101
2102 2007-11-20  Martin Baulig  <martin@ximian.com>
2103
2104         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
2105
2106         * mono-debug-debugger.c
2107         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
2108         (mono_debugger_remove_breakpoint): Likewise.
2109         (mono_debugger_check_breakpoints): Likewise.
2110         (mono_debugger_register_class_init_callback): New public method.
2111         (mono_debugger_remove_class_init_callback): Likewise.
2112         (mono_debugger_add_type): Likewise.
2113
2114         * mono-debug-debugger.h
2115         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
2116
2117 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
2118
2119         * class.c: more interface implementations needed for the
2120         array enumerator (fixes bug #341112).
2121
2122 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
2123
2124         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
2125         fix ParamName of ArgumentNullExceptions.
2126
2127 2007-11-17  Miguel de Icaza  <miguel@novell.com>
2128
2129         * reflection.c (mono_reflection_encode_sighelper): Generate the
2130         modopts and modreqs.   I have a useless test that crashes monodis,
2131         but that shows the code working.
2132
2133 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
2134
2135         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
2136         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
2137
2138 2007-11-15  Dick Porter  <dick@ximian.com>
2139
2140         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
2141         When joining a thread, it's the thread that's calling Join that
2142         gets WaitSleepJoin state not the target.  Fixes the standalone
2143         test case in bug 334740, and hopefully the whole bug too.
2144
2145 2007-11-15  Dick Porter  <dick@ximian.com>
2146
2147         * process.c: Read file version info from the files pointed at by
2148         process modules, not the current process.  Fixes bug 315969.
2149
2150         Use windows typedef names in some places to fix warnings on the
2151         windows build.
2152
2153 2007-11-15  Mark Probst  <mark.probst@gmail.com>
2154
2155         * image.c, metadata-internals.h: Added a generic_class_cache hash
2156         to MonoImage for looking up generic classes when sharing generics.
2157
2158 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
2159
2160         * sgen-gc.c: warning cleanups.
2161
2162 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
2165         inherited properties.
2166
2167 2007-11-14  Mark Probst  <mark.probst@gmail.com>
2168
2169         * object.c, class-internals.h: Added more information to the
2170         runtime generic context.
2171
2172 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
2175         instead of just the target method. Generalize the abstract method handling to
2176         handle any non-static method.
2177
2178         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
2179         mono_marshal_get_delegate_invoke () signature change.
2180
2181 2007-11-13  Mark Probst  <mark.probst@gmail.com>
2182
2183         * class.c, class-internals.h: Made
2184         mono_type_get_basic_type_from_generic () public.  Fixed member
2185         access check for shared generics.
2186
2187         * loader.c: Don't insert field into field cache if it's part of a
2188         non-inflated generic class.
2189
2190         * domain.c, domain-internals.h: The generic sharing context is now
2191         part of the jit info data structure.  Added two accessor
2192         functions.
2193
2194 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
2197         the array Get/Set/Address methods, since the JIT inlines them.
2198
2199         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
2200
2201         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
2202         (mono_image_init): Initialize runtime_invoke_direct_cache.      
2203
2204         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
2205         mono_marshal_get_delegate_invoke signature change.
2206
2207         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
2208         an additional argument. Add support for invoking abstract methods.
2209
2210         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
2211
2212         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
2213
2214 2007-11-09  Mark Probst  <mark.probst@gmail.com>
2215
2216         * class.c: Do field layout for open generic classes as well.
2217
2218 2007-11-09  Mark Probst  <mark.probst@gmail.com>
2219
2220         * gc.c, gc-internal.h: Don't finalize threadpool threads with
2221         other objects, because the threadpool is still around.  Put them
2222         in a list instead and after finalizing all other objects in the
2223         root domain shut down the thread pool and then finalize the
2224         threads.  Fixes bug #337383.
2225
2226         * threads.c, thread-types.h: New mono_thread_create_internal()
2227         function for marking a thread with the threadpool flag before it
2228         started.  Set synch_cs to NULL after freeing it.
2229
2230         * threadpool.c: Mark threadpool threads before they start.
2231
2232 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
2233
2234         * reflection.h, reflection.c: don't export random functions
2235         and lazy load dbnull and missing objects.
2236
2237 2007-11-07  Jonathan Chambers <joncham@gmail.com>
2238
2239         * class.c: Initialize COM types if COM interfaces
2240         are present (not just COM classes).
2241         
2242         Code is contributed under MIT/X11 license.
2243
2244 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
2245         * reflection.c:
2246         create_dynamic_mono_image: hook module profiler events (dynamic case).
2247         mono_image_basic_init: hook assembly profiler events (dynamic case).
2248
2249 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
2250         * profiler.c:
2251         simple_appdomain_unload: completely terminate the profiler
2252         instead of only processing the statistical samples.
2253         simple_shutdown: make sure this is really called exactly once,
2254         even in multithreaded applications, and always listen to
2255         appdomain events.
2256         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
2257         here, the "[un]load" functions will do it.
2258         Fixes bugs #333791 and #325261.
2259
2260 2007-11-07  Geoff Norton  <gnorton@novell.com>
2261
2262         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
2263         rather than depend on __APPLE__.
2264
2265 2007-11-07  Mark Probst  <mark.probst@gmail.com>
2266
2267         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
2268
2269 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
2270
2271         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
2272         UTF16 MonoString. Fix the crash from bug #335488
2273
2274 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
2275
2276         * marshal.c: Correct (for non-Win32 OS) length != size in 
2277         mono_string_from_bstr. Fix #339530.
2278
2279 2007-11-06  Geoff Norton  <gnorton@novell.com>
2280
2281         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
2282         to succeed
2283
2284 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
2285
2286         * process.c: Added run-time GetProcessId API detection for Windows.
2287
2288 2007-11-04  Miguel de Icaza  <miguel@novell.com>
2289
2290         * reflection.c  (mono_param_get_objects): If a parameter has the
2291         attribute [System.Runtime.InteropServices.Optional] we should
2292         set the DefaultValue of the ParameterInfo to be
2293         System.Reflection.Missing instead of DBNull.
2294
2295         See bug #339013.
2296
2297         (mono_get_reflection_missing_object): New method,
2298         returns the System.Reflection.Missing.Value singleton instance.
2299
2300 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
2301
2302         * culture-info-table.h : regenerated.
2303
2304 2007-11-02  Jonathan Chambers <joncham@gmail.com>
2305
2306         * icall.c: Use GetEnvironmentStrings on windows
2307         so we are using the same environment block as 
2308         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
2309         #333740.
2310         
2311         Code is contributed under MIT/X11 license.
2312
2313 2007-10-31  Martin Baulig  <martin@ximian.com>
2314
2315         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
2316
2317         * mono-debug-debugger.h
2318         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
2319
2320 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
2321
2322         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
2323         classes.
2324
2325 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
2326
2327         * culture-info-table.h : regenerated.
2328
2329 2007-10-30  Robert Jordan  <robertj@gmx.net>
2330
2331         * icall-def.h, icall.c:
2332         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
2333
2334         Code is contributed under MIT/X11 license.
2335
2336 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * class.c (mono_class_setup_vtable): Find the inflated methods in the
2339         inflated class instead of inflating them again.
2340         
2341         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
2342         dynamic case.
2343
2344         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
2345         Call setup_supertypes () after klass->parent is set.
2346         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
2347
2348         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
2349         for inflated instances of not yet created dynamic generic classes.
2350         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
2351         times from inflated_method.
2352         (methodbuilder_to_mono_method): Ditto.
2353
2354 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
2355
2356         * gc.c: code cleanup and removed old untested option of not creating the
2357         finalizer thread.
2358
2359 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
2362         creating a jump trampoline for dynamic methods.
2363
2364 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
2365
2366         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
2367         generic TypeBuilders when called from another method of the same type (bug #335131).
2368
2369
2370 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
2371
2372         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
2373         doesn't seem to work perfectly.
2374         
2375         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
2376         called multiple times.
2377         (methodbuilder_to_mono_method): Ditto.
2378         (resolve_object): Inflate FieldBuilder's.
2379
2380 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
2381
2382         * string-icalls.c, string-icalls.h, appdomain.c: patch from
2383         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
2384         RemoveEmptyEntries in the string.Split implementation (bug #322375).
2385
2386 2007-10-26  Dick Porter  <dick@ximian.com>
2387
2388         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
2389         Thread initialisation changes
2390
2391 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
2392
2393         * verify.c: fix compatibility check between arrays and System.Array
2394
2395 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
2398         too. Fixes #336999.
2399
2400 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * object.c (mono_value_box): Use typed allocation here.
2403
2404 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
2407         trampoline instead of compiling the method right away.
2408
2409         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
2410
2411 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
2414         related fields for dynamic classes. Fixes #334493.
2415
2416 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
2417
2418         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
2419         
2420         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
2421
2422         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
2423         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
2424
2425         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
2426
2427         * reflection.c (create_generic_typespec): Initialize klass->generic_container
2428         if needed.
2429         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
2430
2431 2007-10-18  Jonathan Chambers <joncham@gmail.com>
2432
2433         * marshal.c: Use correct key when removing item
2434         from ccw_hash.
2435         
2436         Code is contributed under MIT/X11 license.
2437
2438 2007-10-17  William Holmes  <billholmes54@gmail.com>
2439
2440         *marshal.c: Adding a case to marshal booleans to U1
2441
2442         Code is contributed under MIT/X11 license.
2443
2444 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * class.c (mono_class_from_name): Search the modules compromising dynamic
2447         assemblies. Fixes #331601.
2448
2449 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
2452         exception if the type name contains an assembly component. Fixes #334203.
2453
2454         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
2455         modules inside dynamic assemblies. Fixes #334200.
2456         
2457         * reflection.c: Set image->public_key and image->public_key_length;
2458
2459         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
2460         fields.
2461
2462         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
2463         
2464 2007-10-16  Mark Probst  <mark.probst@gmail.com>
2465
2466         * metadata.c: Implemented correct comparing of generic classes.
2467         An inflated generic class can be equal to a non-inflated one if it
2468         is inflated with generic type variables as type arguments.  Fixes
2469         bug #333798.
2470
2471 2007-10-15  Dick Porter  <dick@ximian.com>
2472
2473         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
2474         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
2475         81646.
2476
2477         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
2478         instead of a monitor lock.  This means that monitor_try_enter and
2479         co can set the thread state safely.
2480         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
2481         thread_interrupt_requested, so interrupt actually works.
2482
2483         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
2484         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
2485         state accessor function
2486
2487 2007-10-15  Martin Baulig  <martin@ximian.com>
2488
2489         * mono-debug.h
2490         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
2491         the debugger with the current runtime.
2492
2493 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
2494
2495         * object.c, object-internals.h: added the ability to set a single
2496         trampoline for all the slots in a vtable.
2497
2498 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2499
2500         * marshal.c: deal with a possible race condition during multicast
2501         delegate invocation.
2502
2503 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2504
2505         * class.c: ensure value type methods don't have the synchronized
2506         flag set.
2507
2508 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
2509
2510         * string-icalls.c, string-icalls.h: reverted unapproved patch that
2511         breaks the build.
2512
2513 2007-10-11  Joel Reed  <joelwreed@comcast.com>
2514
2515         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
2516         to take an options parameter so that empty entries can be removed during
2517         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
2518
2519 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2520
2521         * marshal.c: make sure we don't store the signature from a dynamic
2522         method into the runtime invoke cache (bug #327189).
2523
2524 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
2525
2526         * marshal.c: make sure the wrapper methods are properly initialized.
2527
2528 2007-10-11  Mark Probst  <mark.probst@gmail.com>
2529
2530         * metadata.c, metadata-internals.h: Generalized
2531         mono_type_stack_size() to mono_type_stack_size_internal() which
2532         takes an additional argument specifying whether it allows open
2533         types.
2534
2535 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2536
2537         * verify.c (do_invoke_method): handle typedbyref params
2538         correctly and check for unverifiable return values.
2539
2540         * verify.c (do_newobj): fix a warning.
2541
2542 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2543
2544         * verify.c: don't tread typedbyref as allways unverifable,
2545         so uses, like (ld/st)loc.0 are valid. verify for the cases
2546         that it matters, like boxing related operations.
2547
2548 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2549
2550         * verify.c: add verification of the newobj opcode. verification
2551         of delegate instantation still missing due ldftn and virldftn not
2552         pushing the function type on stack
2553
2554 2007-10-08  Mark Probst  <mark.probst@gmail.com>
2555
2556         * class-internals.h: Runtime generic context data structure
2557         definition.
2558
2559         * object.c: Initialization of runtime generic context at runtime
2560         vtable creation time.
2561
2562 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
2563         * class.c (mono_class_create_from_typedef,
2564         mono_class_from_generic_parameter, mono_ptr_class_get,
2565         mono_fnptr_class_get, mono_bounded_array_class_get)
2566         * domain.c (mono_domain_create, mono_domain_free)
2567         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
2568         * image.c (do_mono_image_load, mono_image_close):
2569         Hooked up load-unload profiler events.
2570
2571 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
2572
2573         * domain.c: track statistics about the actual amount of native code
2574         allocated.
2575
2576 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
2577
2578         * class.c: the valuetype enumerators don't have the additional
2579         supertypes interfaces.
2580
2581 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
2582
2583         * class.c: need more interfaces setup for the IEnumerator<T>
2584         object created for arrays (tests/ienumerator-interfaces.2.cs).
2585
2586 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
2589
2590 2007-10-05  Alp Toker  <alp@atoker.com>
2591
2592         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
2593         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
2594         #315863.
2595
2596 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
2597
2598         * verify.c (verify_type_compatibility_full): verification of
2599         compatibility improved, validates correctly non-strict checks between
2600         native int and I4 types different than (unsigned)int32.
2601
2602         * verify.c (do_store_indirect): added, do all verification of
2603         ldind.X opcodes. 
2604
2605         * verify.c (get_load_indirect_mono_type): renamed to
2606         get_indirect_op_mono_type, as it now returns the MonoType for 
2607         ldind.X and stind.X opcodes.
2608
2609 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
2610
2611         * reflection.c: Fix the encoding of generic type definition for
2612         TypeBuilders.
2613
2614         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
2615         mono_image_typedef_or_ref but allows to specify if typespec lookups should
2616         be made. Typespec check is done prior to typeref cache lookup.
2617
2618         * reflection.c (mono_image_typedef_or_ref): now just delegate to
2619         mono_image_typedef_or_ref_full.
2620
2621         * reflection.c (encode_generic_class): encode the generic class
2622         directly instead of calling encode_type.
2623
2624         * reflection.c (encode_type): encode the generic type definition
2625         MonoClass as a generic instantiation.
2626
2627         * reflection.c (create_typespec): cache typespec tokens in
2628         the assembly->typespec cache. Don't create typespec for a generic
2629         instance MonoClass. Create typespec for the generic type defintion.
2630
2631         * reflection.c (create_generic_typespec): encode the generic
2632         class directly instead of calling encode_type.
2633
2634         * reflection.c (mono_image_create_token): encode the generic
2635         type definition not using a typespec for MonoType instances.
2636
2637
2638 2007-10-04  Raja R Harinath  <rharinath@novell.com>
2639
2640         Fix #328812
2641         * class.c (mono_image_init_name_cache): Don't return nested
2642         'protected internal' classes.
2643         (mono_class_from_name_case): Likewise.
2644
2645 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
2646
2647         * icall-def.h, icall.c : get_bundled_machine_config() is now the
2648           common function used by both DefaultConfig in System.dll and
2649           InternalConfigurationHost in System.Configuration.dll.
2650
2651 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2652
2653         * class.c: automatically add to vectors only a few essential explicit
2654         generic interfaces. The rest of the interfaces that arrays should
2655         provide are currently implicitly added (but still not lazily, see the
2656         design in the discussion of bug#325495 for the details of what is
2657         needed for that). Additionally, implicit interfaces are assigned the
2658         same vtable slot as the explicit interfaces (as they are compatible):
2659         this enables huge memory savings since we don't need to instantiate
2660         as many memthods and as large vtables anymore. Also, Since
2661         GetEnumerator<T> returns an instance of a type that is required to
2662         support a similarly large set of interfaces as arrays, we add
2663         implicit interfaces and interface offset sharing support to those
2664         types, too. This change adds all the required interfaces so that
2665         the anonarray.cs test case in the bug report works (we don't add
2666         all the interfaces to arrays of arrays 3-level deep and more because
2667         of the memory requirements explained in the bug and since they are much
2668         less common: the lazy-loading support will enabled them to work, too).
2669
2670 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
2671
2672         * verify.c (merge_stacks): major clean up, all type compatibility
2673         checks are done by verify_type_compatibility. This fix my earlier lack
2674         of understanding of the CLR type system and merge_stacks no longer looks
2675         scary.
2676
2677         * verify.c: fixed some bad spelling.
2678
2679 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
2680
2681         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
2682         a given stack slock.
2683         
2684         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
2685         verify_type_compatibility_full. This removed a near indentical function and fixed
2686         handling of Int32 and IntPtr across all opcodes.
2687
2688 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2689
2690         * class.c: only vectors have the additional generic interfaces.
2691
2692 2007-10-01  Jonathan Chambers <joncham@gmail.com>
2693
2694         * mono-config.c: Use g_strcasecmp instead of
2695         strcasecmp like everywhere else to fix
2696         compilation with MSVC.
2697         
2698         Code is contributed under MIT/X11 license.
2699
2700 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2701
2702         * object.c, object-internals.h: refactored the IMT code to enable
2703         building a single slot at a time and lazily creating the IMT trampolines
2704         and thunks.
2705
2706 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
2709
2710         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
2711         Fixes #328501.
2712         
2713 2007-09-29  Raja R Harinath  <harinath@gmail.com>
2714
2715         * loader.c (method_from_methodspec): Rearrange to avoid
2716         un-necessary exposition.  Don't assert out if the method's
2717         declaring type is a generic type definition.
2718
2719 2007-09-28  Martin Baulig  <martin@ximian.com>
2720
2721         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
2722
2723 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
2724
2725         * class-internals.h: optimize field layout of MonoClass to
2726         requires less cachelines at runtime and save a few bytes on 64 bit
2727         systems.
2728
2729 2007-09-28  Jb Evain  <jbevain@novell.com>
2730
2731         * reflection.c: when encoding type names in custom attributes,
2732         if the type is a closed generic type, its generic arguments
2733         have to be serialized as AssemblyQualifiedName, so that when
2734         they are deserialized, it's possible to re-create them properly.
2735         Fixes #329450.
2736
2737
2738 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
2739
2740         * object.c, class-internals.h: added delegate-creation counter.
2741
2742 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
2743
2744         * class.c: cleanup of the code that synthetizes interfaces for
2745         arrays in 2.0: saves quit a bit of corlib mempool memory.
2746         Code to fix bug #325495 ifdeffed out for now until the issues
2747         with memory usage and O(n^2) behaviour are fixed.
2748
2749 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
2750
2751         * marshal.c: when possible, do not duplicate the name of the methods
2752         in the method builder and in the generated MonoMethod.
2753
2754 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
2755         * verify.c: added support for type checking ldind_* opcodes.
2756
2757 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
2758
2759         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
2760         which is used to distinguish the fully open instantiation of a TypeBuilder
2761         with the rest. This temporary hack is required to restore the property that
2762         the fully open instantiation is the same type of the generic type definition.
2763
2764         * class-internals.h (mono_generic_class_is_generic_type_definition):
2765         new function as part of the internal API.
2766
2767         * class.c (inflate_generic_type): return NULL when the generic inst is
2768         fully open. The fully open generic type is now the same as the generic type
2769         definition for non TypeBuilder types.
2770
2771         * class.c (mono_generic_class_get_class): removed assert since it is
2772         no longer valid, gklass->cached_class can point to the generic type definition.
2773
2774         * class.c (mono_generic_class_is_generic_type_definition): new.
2775
2776         * metadata.c (mono_generic_class_hash): added is_tb_open field
2777         to the hash calculation.
2778
2779         * metadata.c (free_generic_class): if the generic class is associated
2780         with the generic type definition, its field will come from the mempool and
2781         must not be freed.
2782
2783         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
2784         new, this function identifies the corner case of a TypeBuilder fully open
2785         instantiation.
2786
2787         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
2788         for lookup. Set gclass->cached_class to be the container class in case of
2789         the fully open instantiation of non TypeBuilder types.
2790
2791         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
2792         to compare generic classes.
2793
2794         * reflection.c (method_encode_methodspec): remove assert that
2795         no longer is valid.
2796
2797         * reflection.c (mono_reflection_generic_class_initialize): add
2798         an aditional assert to ensure the proper type is used.
2799
2800 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
2801
2802         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
2803         to enjoy it.
2804
2805 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
2806
2807         * verify.c (push_arg): Fixed support for ldarga
2808         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
2809         MonoType used as first arg in case of instance calls.
2810
2811 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         * verify.c: Support for verifying VAR and MVAR types, 
2814
2815 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * icall.c (ves_icall_get_property_info): Set the reflected type of the
2818         accessors correctly.
2819
2820 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
2821
2822         * threads.c: support OSX and other systems in
2823         mono_thread_get_stack_bounds (bug #328026).
2824
2825 2007-09-25  Martin Baulig  <martin@ximian.com>
2826
2827         * mono-debug.h
2828         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
2829
2830 2007-09-24  Martin Baulig  <martin@ximian.com>
2831
2832         * mono-debug.h
2833         (MonoDebugClassEntry): Moved the definition of this struct into
2834         mono-debug.c to make it private.
2835
2836         * mono-debug.c
2837         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
2838         type table per symbol file, we don't need to store the symfile id
2839         any longer.
2840
2841 2007-09-24  Martin Baulig  <martin@ximian.com>
2842
2843         Create one type table per symbol file, since a `MonoClass *' gets
2844         invalid when its image is unloaded.
2845
2846         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
2847         (MonoDebugHandle): Added `type_table'.
2848
2849 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
2850
2851         * mempool.c, mempool.h: added mono_mempool_new_size () API
2852         to be able to specify a smaller initial size for the pool.
2853         Adjusted the code to slowly increase pool size before using
2854         the previous default size.
2855         * image.c: use a small initial size for image mempools.
2856
2857 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
2860         Fixes ##320990.
2861
2862         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
2863         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
2864
2865 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * metadata.c (mono_type_create_from_typespec): Remove an invalid
2868         free. Fixes #327438.
2869
2870 2007-09-21  Raja R Harinath  <harinath@gmail.com>
2871
2872         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
2873         generic instantiations, etc.
2874         <MONO_TYPE_ARRAY>: Likewise.
2875
2876 2007-09-21  Martin Baulig  <martin@ximian.com>
2877
2878         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
2879         these structs were never defined.
2880         (MonoDebugHandle): Removed the `_priv' field, it was never used.
2881
2882 2007-09-21  Martin Baulig  <martin@ximian.com>
2883
2884         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
2885
2886 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
2887
2888         * image.c: removed the guid hash tables: we can get the same info
2889         without the additional memory usage hit (partially fixes also bug #327052).
2890
2891 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
2892
2893         * profiler.h, profiler-private.h, profiler.c: add a new profiler
2894         event to handle unloading methods. After the event is called, the
2895         corresponding MonoMethod* must be considered invalid.
2896         * loader.c (mono_free_method): call the new mono_profiler_method_free
2897         event.
2898
2899 2007-09-20  Mark Probst  <mark.probst@gmail.com>
2900
2901         * domain-internals.h: New flag in MonoJitInfo which marks shared
2902         generic methods.  New hash table (shared_generics_hash) in
2903         MonoDomain to keep track of shared generic methods.  Prototypes
2904         for functions to register and lookup shared generic methods.
2905
2906         * domain.c: Support for registering and looking up shared generic
2907         methods via a hash table (shared_generics_hash) in MonoDomain.
2908
2909         * class-internals.h: New exception to signal failure of shared
2910         compilation of a generic method.  New counters for generics
2911         sharing in MonoStats.
2912
2913 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
2914
2915         * image.c, metadata-internals.h: don't keep a file descriptor open
2916         for loaded assemblies (bug#325988).
2917
2918 2007-09-19  Raja R Harinath  <rharinath@novell.com>
2919
2920         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
2921         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
2922         use the corresponding datatypes.
2923         (type_in_image): Update to changes.
2924         (CleanForImageUserData): Simplify.
2925         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
2926         Avoid quadratic behaviour in handling the "stolen" list by
2927         separating the filter predicate out, and by prepending the stolen
2928         items rather than appending them.
2929         (steal_ginst_in_image): Likewise.
2930         (mono_metadata_clean_for_image): Update to changes.
2931
2932 2007-09-19  Martin Baulig  <martin@ximian.com>
2933
2934         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
2935
2936 2007-09-19  Martin Baulig  <martin@ximian.com>
2937
2938         * mono-debug.c (mono_debug_cleanup): Don't call
2939         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
2940
2941 2007-09-19  Raja R Harinath  <harinath@gmail.com>
2942
2943         Fix crash on 'make run-test' in mcs/errors
2944         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
2945         Avoid more potential allocations in mono_class_from_mono_type.
2946         (ginst_in_image): Update to changes.
2947         (gclass_in_image): Rearrange slightly.
2948
2949 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * class.c (mono_class_init): Move the code that sets up class->methods to 
2952         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
2953
2954         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
2955         canonical instance of an inflated generic signature.
2956         (mono_type_create_from_typespec): Remove an invalid free.
2957
2958         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
2959
2960 2007-09-18  Marek Habersack  <mhabersack@novell.com>
2961
2962         * domain-internals.h: added a declaration of the
2963         mono_assembly_load_full_nosearch internal function.
2964
2965         * assembly.c (mono_assembly_load_with_partial_name): use
2966         mono_try_assembly_resolve return value properly.
2967         (mono_assembly_load_full_nosearch): copied the function body from
2968         mono_assembly_load_full, without the code to invoke assembly
2969         search hooks.
2970         (mono_assembly_load_full): calls the above new function and if the
2971         assembly is not resolved, invokes the search hooks.
2972
2973         * appdomain.c (mono_runtime_init): restore the global postload
2974         assembly search handlers.
2975
2976 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
2977
2978         * class.c (mono_class_init): Make sure class->methods and class->properties
2979         are never NULL in the generics case.
2980
2981         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
2982
2983 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * metadata.c (free_generic_class): Disable some code to fix the build.
2986
2987         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
2988
2989         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
2990         from the image mempool.
2991
2992         * metadata.c (free_generic_class): Free more data from the inflated class.
2993
2994         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
2995
2996         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
2997         mempool.
2998         (mono_type_create_from_typespec): Ditto.
2999
3000         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
3001         MonoImage to the caller.
3002         (mono_init_internal): Save the opened image in a global variable.
3003         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
3004
3005         * reflection.c (resolve_object): Fix a leak.
3006
3007         * metadata.c: Fix the freeing of data in the generics caches.
3008         
3009         * metadata.c (free_generic_inst): Comment this out to fix the build.
3010         (free_generic_class): Ditto.
3011
3012         * metadata.c: Free cached generic methods, instantinations and classes when
3013         they are removed from the caches.
3014         (mono_metadata_free_type): Free the type itself.
3015
3016         * class.c: Free the result of mono_class_inflate_generic_type () in a few
3017         places.
3018
3019 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
3020
3021         * boehm-gc.c: restrict managed allocs to __thread supporting
3022         architectures.
3023
3024 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
3027         (mono_generic_class_get_class): Fix a leak.
3028
3029         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
3030         mono_metadata_free_type ().
3031         (mono_metadata_inflate_generic_inst): Fix a leak.
3032
3033 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * mono-debug.c (free_header_data): Fix a leak missed earlier.
3036
3037         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
3038         mempool.
3039
3040         * mono-debug.c (mono_debug_close_image): Fix call to 
3041         g_hash_table_remove ().
3042
3043 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
3044
3045         * icall-def.h: redirect all the string ctor to the managed
3046         CreateString () methods.
3047         * string-icalls.c, string-icalls.h: removed dead code for string
3048         ctors and icalls.
3049
3050 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
3051
3052         * mono-debug.c: Fix memory leaks.
3053
3054 2007-09-14  Jonathan Chambers <joncham@gmail.com>
3055
3056         * threads-types.h: Implement mono_hazard_pointer_set and 
3057         mono_hazard_pointer_clear macros using do/while(0) to fix
3058         compilation with MSVC.
3059         
3060         Code is contributed under MIT/X11 license.
3061
3062 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
3065         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
3066
3067 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3068
3069         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
3070         icalls.
3071
3072 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3073
3074         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
3075         managed-code allocated as well.
3076
3077 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
3078
3079         * class.c (mono_class_is_assignable_from): Add support for generic variance.
3080
3081 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
3082
3083         * boehm-gc.c: fixed the build after the AOT changes.
3084
3085 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
3086
3087         * wrapper-types.h: Add an ALLOC wrapper type.
3088
3089         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
3090         reference managed allocator methods.
3091
3092 2007-09-12  Marek Safar  <marek.safar@gmail.com>
3093
3094         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
3095         of Type array and not MonoType, a fix suggested by Hari.
3096         
3097 2007-09-12  Jonathan Chambers <joncham@gmail.com>
3098
3099         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
3100         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
3101         
3102         Code is contributed under MIT/X11 license.
3103
3104 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
3105
3106         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
3107
3108 2007-09-12  Marek Habersack  <mhabersack@novell.com>
3109
3110         * image.c (do_mono_image_open): if assembly file fails to open and
3111         MONO_IOMAP is in effect, try to find the path in a
3112         case-insensitive way.
3113
3114         * appdomain.c (mono_runtime_init): do not install postload hooks -
3115         tests show that MS.NET doesn't use anything of that sort to
3116         trigger the AppDomain.AssemblyResolve event.
3117         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
3118         made non-static.
3119         (mono_runtime_init): init portability helpers here.
3120
3121         * assembly.c (mono_assembly_load_with_partial_name): if other   
3122         attempts fail, trigger the AppDomain.AssemblyResolve event handler
3123         to resolve the assembly.
3124
3125         * domain-internals.h: added mono_try_assembly_resolve and marked
3126         it as internal.
3127
3128 2007-09-11  Jb Evain  <jbevain@novell.com>
3129
3130         * object-internals.h (MonoReflectionDynamicMethod): add
3131         a `MonoReflectionType *owner` field. The owner is used
3132         * reflection.c:
3133         (mono_reflection_create_dynamic_method): use the owner of the dynamic
3134         method as the class declaring the dynamic method.
3135         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
3136         dynamic method to the declaring type of the methodbuilder.
3137
3138 2007-09-11  Mark Probst  <mark.probst@gmail.com>
3139
3140         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
3141         rules for calling methods via reflection.
3142
3143 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
3144
3145         * reflection.c (resolve_object): Add support for MonoGenericClass. 
3146         Inflate MonoType's.
3147
3148 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
3149
3150         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
3151         provide a managed method that does fast allocations without needing
3152         a managed->unmanaged transition. Boehm GC implementation currently
3153         enabled for ptrfree objects on sane architectures.
3154
3155 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
3156
3157         * marshal.c, marshal.h: exported a couple of useful functions and
3158         added mono_mb_get_label () to easily handle backward branches.
3159
3160 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
3161
3162         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
3163
3164 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
3165
3166         * loader.c (find_method): Fixed the regression introduced while
3167         fixing bug #81466.
3168
3169 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
3170
3171         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
3172         well.
3173         
3174         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
3175         icall.c reflection.c: Pass a MonoGenericContext argument to 
3176         mono_lookup_dynamic_token ().
3177
3178         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
3179         #82744.
3180         
3181 2007-09-09  Robert Jordan  <robertj@gmx.net>
3182
3183         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
3184         for generic methods.
3185
3186         * object.c (mono_object_get_virtual_method): Handle generic methods.
3187         Fixes bug #78882.
3188
3189         Code is contributed under MIT/X11 license.
3190
3191 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
3192
3193         * image.c: fix locking in mono_image_load_file_for_image ().
3194
3195 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
3196
3197         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
3198         used only as a cache: added an icall to fill it.
3199
3200 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
3201
3202         * reflection.h: exposed mono_reflection_free_type_info
3203         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
3204         since mono_reflection_bind_generic_parameters makes a copy of it.
3205         * reflection.c (free_type_info): subinfos should be freed.
3206         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
3207         made non static.
3208         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
3209         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
3210         this fixes #82695 and #81726.
3211    
3212
3213 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
3214
3215         * process.h, process.c:  added support for user profile/info in
3216           ProcessStartInfo. For now only Windows works.
3217
3218 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
3219
3220         * metadata.c: consider the generic arguments when comparing
3221         signatures (bug #82614).
3222
3223 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3224
3225         * cil-coff.h, image.c: updated assembly loader to cope with the
3226         PE32+ 64 bit file format.
3227
3228 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
3229
3230         * assembly.c, class.c, domain.c, loader.c: remove useless
3231         inclusion of cil-coff.h.
3232
3233 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
3234
3235         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
3236         if interface is marked with CoClassAttribute. 
3237    
3238         Code is contributed under MIT/X11 license.
3239
3240 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
3241
3242         * sgen-gc.c: ensure no object from the to space is copied again or finalized
3243         if it's seen twice in major collections.
3244
3245 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
3246
3247         * sgen-gc.c: big objects are not copied to the gray area, but they
3248         need to be considered for scanning, too, if they are brought alive
3249         by an object ready for finalizations or a survived one.
3250
3251 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
3252
3253         * sgen-gc.c: properly account the number of disappearing links when
3254         they are nullified.
3255
3256 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
3257
3258         * sgen-gc.c: share the code to scan the registered roots between the
3259         different types of collections.
3260
3261 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
3262
3263         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
3264
3265 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
3266
3267         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
3268         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
3269
3270 2007-08-28  Mark Probst  <mark.probst@gmail.com>
3271
3272         * security-manager.c (mono_security_manager_get_methods):
3273         LinkDemandSecurityException now has 2 arguments instead of 3.
3274
3275 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
3278         platforms which need it.
3279
3280 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
3281
3282         * sgen-gc.c: unregister thread data structures with a pthread_key_t
3283         dtor.
3284
3285 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
3286
3287         * threads.c: free the thread static data on thread exit.
3288
3289 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
3290
3291         * class.c: walk the hierarchy to find the generic definition for
3292         a class (fixes runtime part of bug #82498).
3293
3294 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
3297         ...
3298
3299         * image.c (mono_image_close): Here. Hopefully fixes #82510.
3300
3301 2007-08-24  Mark Probst  <mark.probst@gmail.com>
3302
3303         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
3304
3305 2007-08-24  Robert Jordan  <robertj@gmx.net>
3306
3307         * appdomain.c: don't perform the ':'->';' substitution on Win32.
3308
3309 2007-08-24  Jb Evain  <jbevain@novell.com>
3310
3311         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
3312         for byref types.
3313
3314 2007-08-24  Mark Probst  <mark.probst@gmail.com>
3315
3316         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
3317         #82286.
3318
3319 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * assembly.c: Fix a warning.
3322         
3323 2007-08-23  Marek Habersack  <mhabersack@novell.com>
3324
3325         * appdomain.c: parse the <runtime> section looking for the probing
3326         element with the 'privatePath' attribute, which sets additional
3327         directories in which the runtime should look for assemblies.
3328
3329 2007-08-23  Robert Jordan  <robertj@gmx.net>
3330
3331         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
3332         Fixes #82499.
3333
3334 2007-08-23  Martin Baulig  <martin@ximian.com>
3335
3336         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
3337         _mono_debug_init_corlib() and remove it from the header file.
3338
3339 2007-08-23  Martin Baulig  <martin@ximian.com>
3340
3341         * mono-debug-debugger.c
3342         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
3343         don't notify the debugger about it.
3344
3345         * mono-debug-debugger.h
3346         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
3347
3348 2007-08-23  Robert Jordan  <robertj@gmx.net>
3349
3350         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
3351         Code is contributed under MIT/X11 license.
3352
3353 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
3354
3355         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
3356
3357 2007-08-22  Martin Baulig  <martin@ximian.com>
3358
3359         * mono-debug.c: Store debugging info on a per-domain basis and
3360         free it on domain unload.  Add support for unloading symbol files.
3361
3362         * mono-debug.h
3363         (MonoDebugList): New typedef.
3364         (MonoSymbolTable):
3365         - add `data_tables and `type_table'.
3366         - replace 'symbol_files' and `num_symbol_files' with a
3367           `MonoDebugList *'.
3368         (mono_debug_data_table): Removed.
3369         (mono_debug_list_add): New public function.
3370         (mono_debug_list_remove): New public function.
3371         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
3372         (mono_debug_init_2_memory): Renamed into
3373         mono_debug_open_image_from_memory().
3374         (mono_debug_close_image): New public function.
3375         (mono_debug_domain_create): Likewise.
3376         (mono_debug_domain_unload): Likewise.
3377         (MONO_DEBUGGER_VERSION): Bump to 60.
3378
3379         * mono-debug-debugger.h
3380         (MonoDebuggerEvent):
3381         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
3382         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
3383         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
3384         - rename `THREAD_CREATED' and `THREAD_EXITED' into
3385           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
3386         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
3387           meaning.
3388         (mono_debugger_add_symbol_file): Removed.
3389         (mono_debugger_add_type): Removed.
3390         (mono_debugger_lookup_type): Removed.
3391         (mono_debugger_lookup_assembly): Removed.
3392
3393         * domain.c
3394         (mono_domain_create): Call mono_debug_domain_create().
3395         (mono_init_internal): Call mono_debug_init_corlib().
3396
3397         * assembly.c
3398         (mono_assembly_close): Call mono_debug_close_image().
3399
3400 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
3401
3402         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
3403         mmap call.
3404
3405 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
3406
3407         * sgen-gc.c: ensure section->pin_queue_end is initialized
3408         correctly when non pinning objects in the section have been found.
3409
3410 2007-08-22  Marek Habersack  <mhabersack@novell.com>
3411
3412         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
3413         containing a list of directories separated by ':'. MSDN docs say
3414         the directories should be separated with ';'. Part of a bugfix for
3415         bug #81446
3416
3417 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
3418
3419         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
3420         it should MonoType and not MonoClass.
3421
3422 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
3423
3424         * culture-info-table.h : regenerated.
3425
3426 2007-08-20  William Holmes  <billholmes54@gmail.com>
3427
3428         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
3429          to call ReplaceFile Kernel32 on windows or in io-layer.
3430         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
3431         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
3432          as an internal call.
3433
3434         Code is contributed under MIT/X11 license.
3435
3436 2007-08-20  Jb Evain  <jbevain@novell.com>
3437
3438         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
3439         and MONO_EXCEPTION_FIELD_ACCESS.
3440
3441         * debug-helpers.[c|h]: new mono_field_full_name function.
3442
3443 2007-08-20  Mark Probst  <mark.probst@gmail.com>
3444
3445         * class.c: Removed class_security_level() and moved it to
3446         security-core-clr.c.
3447
3448         * security-core-clr.c, security-core-clr.h: class_security_level()
3449         is now public and renamed to mono_security_core_clr_class_level().
3450         It also looks for security attributes in the classes a class is
3451         nested in.
3452
3453 2007-08-20  Mark Probst  <mark.probst@gmail.com>
3454
3455         * security-core-clr.c, security-core-clr.h: CoreCLR security
3456         utility functions.
3457
3458         * Makefile.am: Added security-core-clr.[ch].
3459
3460         * security-manager.c, security-manager.h: Functions and enum for
3461         setting and getting the security mode.
3462
3463         * class.c: CoreCLR security checks.
3464
3465 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
3466
3467         * icall-def.h, process.c, process.h: implemented icall to get
3468         user/system processor times.
3469
3470 2007-08-17  Mark Probst  <mark.probst@gmail.com>
3471
3472         * domain.c, threads.c, class-internals.h, domain-internals.h: New
3473         reader-lock-free jit_info_table.
3474
3475 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
3478
3479         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
3480
3481         * object-internals.h (MonoException): Add missing _data member.
3482
3483 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
3484
3485         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
3486         checking that only methods with matching qname or fqname are picked
3487         from implemented interfaces.
3488
3489 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
3490
3491         * verify.c (do_newarr):added, do type verification of
3492         newarr ops, push the right value on the eval stack.
3493         * verify.c (mono_method_verify): use do_newarr
3494
3495
3496 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
3497
3498         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
3499         factored the common code into get_boxable_mono_type, which
3500         is now using mono_type_get_full, this fixed byref related tests.
3501
3502 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
3503
3504         * class.c: added mono_type_get_full, this function has the same
3505         behavior of mono_class_get_full but the returned MonoType has
3506         all metadata of the associated token in case of a typespec token.
3507         * class.c: added mono_type_retrieve_from_typespec, used by 
3508         mono_type_get_full to retrieve the token type.
3509         * class.c (mono_class_create_from_typespec): changed to use
3510         mono_type_retrieve_from_typespec.
3511         * class.c (mono_ldtoken): changed to use mono_type_get_full
3512         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
3513         * class-internals.h: exported mono_type_get_full for internal use.
3514
3515 2007-08-16  Jb Evain  <jbevain@novell.com>
3516
3517         * domain.c (supported_runtimes): add entry for
3518         the 'moonlight' runtime version.
3519
3520 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3521
3522         * verify.c (mono_method_verify): small typo sliped in.  
3523
3524 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3525
3526         * verify.c (do_unbox_value): added, do type verification of
3527         unboxing ops
3528         * verify.c (mono_method_verify): use do_unbox_value
3529
3530
3531 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3532
3533         * verify.c (dump_stack_value): fixed typo, was printing string
3534         instead of object on stack.
3535         * verify.c (do_box_value): moved the byref check up as it leads
3536         to invalid code and should be done earlier.
3537         * verify.c: improved error messages for and ldobj
3538
3539 2007-08-15  William Holmes  <billholmes54@gmail.com>
3540
3541         * marshal.c (emit_marshal_custom): Omit the call to 
3542           marshal_native_to_managed when calling native to managed 
3543           and the argument is specified as an out argument.
3544
3545         Code is contributed under MIT/X11 license.
3546
3547 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
3548
3549         * verify.c: fixed the type checks for generics, function pointers and vectors.
3550         Added type verification for ldobj and ldtoken. The verifier
3551         would segfault if header or signature of a method contained references
3552         to non-existant types.
3553
3554 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
3555
3556         * marshal.c (cominterop_get_ccw): Patch from
3557         Bill Holmes to no walk up interface hierarchy. 
3558         All parent methods should be present in the interface for COM.
3559    
3560         Code is contributed under MIT/X11 license.
3561
3562 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
3563
3564         * marshal.c (emit_marshal_com_interface): Patch from
3565         Bill Holmes to handle COM Interfaces as return values
3566         for native->managed calls.
3567    
3568         Code is contributed under MIT/X11 license.
3569
3570 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
3571
3572         * marshal.c (cominterop_get_idispatch_for_object): Implement
3573         for runtime callable wrappers.
3574    
3575         Code is contributed under MIT/X11 license.
3576
3577 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
3578
3579         * pedump.c (main): changed from mono_init to mono_init_from_assembly
3580         so 2.0 types are accessible
3581
3582
3583 2007-08-13  Miguel de Icaza  <miguel@novell.com>
3584
3585         * domain.c (mono_init_internal): Call mono_assembly_load_friends
3586         once we load mscorlib.   Due to the order in which we initialize,
3587         the mono_assembly_load_full routine that loads mscorlib did not
3588         load friends.   We now load it once we load the
3589         mono_defaults.internals_visible_class class. 
3590
3591         * assembly.c: Expose the mono_load_friend_assemblies method.
3592
3593 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
3594
3595         * verify.c: improved the handling of boxing, better
3596         type checking for unary ops and conversion. Fix bug
3597         regarding managed pointer compatibility checking
3598
3599 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
3600
3601         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
3602
3603         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
3604
3605 2007-08-09  Raja R Harinath  <rharinath@novell.com>
3606
3607         * reflection.c (dup_type): Remove.
3608         * class.c (dup_type): Remove.
3609         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
3610         instead of the dodgy 'dup_type'.
3611         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
3612         handle the case where 'dup_type' needed the second argument.
3613
3614 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
3615
3616         * domain.c: Fix a warning.
3617
3618 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
3619
3620         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
3621         checking that methods with the same fqname are not overridden
3622         with a method from an ancestor.
3623
3624 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
3625
3626         * threads.c (free_thread_static_data_helper): Avoid a crash if
3627         thread->static_data is not yet set.
3628
3629 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
3630
3631         * marshal.c: Use correct image when emitting
3632         native wrapper for COM calls.
3633    
3634         Code is contributed under MIT/X11 license.
3635
3636 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
3637
3638         * icall-def.h, security.c, security.h :
3639           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
3640
3641 2007-08-07  Martin Baulig  <martin@ximian.com>
3642
3643         * mono-debug-debugger.h
3644         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
3645
3646         * domain.c (mono_domain_free): Call
3647         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
3648
3649 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3650
3651         * verify.c (check_underflow, check_overflow): error message now returns IL offset
3652         * verify.c (in_same_block): code should test if either offset is inside the clauses
3653         * verify.c (mono_method_verify): push the exception into the eval stack of exception
3654         and filter blocks
3655
3656 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
3657
3658         * image.c (mono_image_close): Fix a leak.
3659
3660         * object.c (mono_runtime_invoke_array): Avoid using alloca.
3661
3662         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
3663
3664 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
3665
3666         * domain.c, threads.c, threads-types.h: fix memory retention issue
3667         with thread static variables not being cleared on domain unload.
3668         Reuse thread static slots after domain unload.
3669
3670 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
3673         nullable type.
3674
3675         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
3676         now done in mono_runtime_invoke_array.
3677
3678         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
3679         receiver is a nullable type.
3680
3681         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
3682         generic parameter.
3683
3684 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
3685
3686         * marshal.c: Implement COM Objects as return type for 
3687         managed->unmanaged calls. Added Release calls for COM Object
3688         out/return values in managed->unmanaged calls.
3689
3690         Code is contributed under MIT/X11 license.
3691
3692 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
3693
3694         * threads.h, threads-type.h: move the hazard pointer declarations
3695         to the private header.
3696
3697 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
3698
3699         * file-io.c, appdomain.c: memory leak fixes.
3700
3701 2007-08-02  Dick Porter  <dick@ximian.com>
3702
3703         * socket-io.c
3704         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
3705         SO_REUSEADDR setting into io-layer/sockets.c.
3706
3707 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
3708
3709         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
3710         from Object when called on a generic parameter. Fixes #82211.
3711
3712 2007-08-01  Dick Porter  <dick@ximian.com>
3713
3714         * file-io.c (convert_share): Test FileShare values bit-by-bit.
3715         Fixes bug 79250 yet again.
3716
3717 2007-07-30  Martin Baulig  <martin@ximian.com>
3718
3719         Merged the `debugger-dublin' branch.
3720
3721         * mono-debug.h
3722         (MonoDebugDataTable): New typedef.
3723         (MonoDebugMethodAddressList): New typedef.
3724         (MonoDebugWrapperData): Removed.
3725         (MonoDebugSymbolTable): Removed `current_data_table',
3726         `current_data_table_size', `current_data_table_offset'.
3727         (MonoDebugDataItemType): Moved into mono-debug.c.
3728         (MonoDebugMethodJitInfo): Remove `address'.
3729         (mono_debug_data_table): New global variable.
3730         (mono_debug_lookup_method_addresses): New public function.
3731         (mono_debug_find_method): Take a `MonoMethod *', not a
3732         `MonoDebugMethodInfo *'.
3733
3734         * mono-debug.c: Drop support for the old symbol tables.
3735
3736 2007-06-28  Martin Baulig  <martin@ximian.com>
3737
3738         * mono-debug.c (mono_debug_debugger_version): New public variable.
3739
3740 2007-07-31  William Holmes  <billholmes54@gmail.com>
3741
3742         * metadata.c Changed mono_type_create_from_typespec to not insert
3743           the type into the hash map until after
3744           do_mono_metadata_parse_type has completed.
3745         Fixes Bug #82194
3746         Code is contributed under MIT/X11 license.
3747
3748 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
3749
3750         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
3751         generic parameter. Fixes #82211.
3752
3753 2007-07-27  Jb Evain  <jbevain@novell.com>
3754
3755         * pedump.c (dump_metadata, dump_metadata_header): dump
3756         versions contained in the metadata header.
3757
3758 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3759
3760         * threads.c: register small_id_table with the GC.
3761
3762 2007-07-27  Mark Probst  <mark.probst@gmail.com>
3763
3764         * threads.c, threads.h, class-internals.h, object-internals.h:
3765         Hazard pointers, to be used by lock-free parallel algorithms.
3766
3767 2007-07-26  Dick Porter  <dick@ximian.com>
3768
3769         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
3770         routine on non-windows platforms, as I've not managed to think of
3771         a non-kludgy way of doing this.  Finishes off bug 78739.
3772
3773 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
3774
3775         * object.c: properly setup interface_bitmap in proxy vtables.
3776
3777 2007-07-25  Marek Habersack  <mhabersack@novell.com>
3778
3779         * appdomain.c (get_shadow_assembly_location): do not use TickCount
3780         to create unique shadow copy target directories, use the domain's
3781         serial number instead. Each domain gets a unique target directory
3782         that way.
3783
3784         * domain.c (mono_domain_create): added code to increment domain
3785         shadow copy serial number and cache the value in the current
3786         domain structure.
3787
3788         * domain-internals.h (struct _MonoDomain): added a new field -
3789         shadow_serial to hold the serial number used in generation of
3790         shadow-copy directories. This is to make sure that the directory
3791         name is unique for each and every domain created. We avoid a race
3792         condition with overriding assemblies already in use by other app
3793         domains.
3794
3795 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
3796
3797         * class.c (mono_bounded_array_class_get): fixed memory leak when 
3798         binding generic parameters.
3799
3800 2007-07-24  Raja R Harinath  <rharinath@novell.com>
3801
3802         * metadata.c (do_mono_metadata_parse_generic_class): Use
3803         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
3804         error.
3805
3806 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
3807
3808         * loader.c, class-internals.h, reflection.c: removed the per-method
3809         generics hashtable: we use the global one through the call of
3810         mono_class_inflate_generic_method ().
3811
3812 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
3813
3814         * class.c, metadata.c, class-internals.h: introduce yet another
3815         generics global cache for inflated methods (fixes 98% of the perf
3816         issue in bug #81806).
3817
3818 2007-07-23  Raja R Harinath  <rharinath@novell.com>
3819
3820         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
3821         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
3822         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
3823         return a MonoGenericInst containing (a copy) of those types.
3824         (mono_metadata_inflate_generic_inst): Update to changes.
3825         (mono_metadata_parse_generic_inst): Likewise.
3826         (mono_get_shared_generic_inst): Likewise.
3827         * reflection.c (mono_class_bind_generic_parameters): Likewise.
3828         (mono_reflection_bind_generic_method_parameters): Likewise.
3829         * metadata-internals.h: Likewise.
3830         * icall.c (free_generic_context): Kill.
3831         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
3832
3833         * reflection.c (reflection_methodbuilder_to_mono_method): Use
3834         mono_metadata_type_dup.
3835         * marshal.c (mono_mb_create_method): Likewise.
3836
3837         * metadata.c (mono_metadata_type_dup): Rename from
3838         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
3839         MonoImage.  Handle a few more cases, esp. when no mempool is given.
3840         * marshal.c, metadata-internals.h: Update to changes.
3841
3842 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3843
3844         * class.c: fixed a small leak for array classes and removed warning.
3845
3846 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
3847
3848         * loader.c (mono_method_get_param_token): Make this work on generic methods.
3849         Return 0x8000000 for return parameters. Fixes #82161.
3850
3851 2007-07-21  Marek Habersack  <grendello@gmail.com>
3852
3853         * appdomain.c (get_shadow_assembly_location): append the current
3854         ticks value to the path. Avoids overwriting the same assemblies by
3855         several threads at the same time.
3856
3857 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
3858         and Raja R Harinath  <rharinath@novell.com>
3859
3860         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
3861         Simplify slightly.
3862         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
3863         property for testing if a method is a generic method definition.
3864
3865 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
3866
3867         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
3868
3869 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3870
3871         * verify.c: used function from private branch, reverted to the one in class.h 
3872
3873 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3874
3875         * verify.c: a typo slipped in and the code wont compile
3876
3877 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3878
3879         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
3880         disabled box instruction as it is doing the wrong thing
3881         improved stack dump messages, now it is easier to debug type related issues
3882
3883
3884 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
3885
3886         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
3887
3888 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3889
3890         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
3891         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
3892         grouped with class and valuetype. This change will simply 
3893         the code as it should be handled just like unmanaged pointers.
3894
3895 2007-07-19  Mark Probst  <mark.probst@gmail.com>
3896
3897         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
3898
3899 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3900
3901         * verify.c: several stack merge issues fixed, reference comparisons now
3902         check the type size. strict type check now works correctly.
3903         added more uses of IS_MANAGED_POINTER macro.
3904         fixed issues pointed by running the test suite against .net.
3905         
3906
3907 2007-07-19  Mark Probst  <mark.probst@gmail.com>
3908
3909         * class.c, loader.c, class-internals.h: Removed the
3910         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
3911         defines.
3912
3913         * icall.c: Better error checking in some internal reflection
3914         methods.
3915
3916 2007-07-18  William Holmes  <billholmes54@gmail.com>
3917
3918         * filewatcher.c : removed unused variable 'filename' in 
3919           ves_icall_System_IO_FSW_SupportsFSW
3920
3921 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
3922
3923         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
3924         obsolete, removed.
3925
3926 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
3927
3928         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
3929         
3930         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
3931
3932 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
3935         Implement generics support.
3936         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3937
3938         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
3939         type_args and method_args arguments.
3940         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
3941         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3942         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
3943
3944 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
3945
3946         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
3947           It adds a rootimage parameter to mono_reflection_get_type_internal,
3948           adds new function mono_reflection_get_type_with_rootimage and use
3949           the rootimage to resolve the types instead of the current image
3950
3951 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3952
3953         * culture-info-table.h: Forgot to update after r78304.
3954
3955 2007-07-13  Raja R Harinath  <rharinath@novell.com>
3956
3957         * class.c (mono_class_is_open_constructed_type)
3958         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
3959
3960 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
3961
3962         * class.c (mono_bounded_array_class_get):  method fails if used with
3963         an incomplete TypeBuilder enum (no basetype field), fixed it by 
3964         avoiding calculating the size for such array as it cannot be instantiated.
3965         Fix bug #82015
3966
3967 2007-07-12  Raja R Harinath  <rharinath@novell.com>
3968
3969         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
3970         field.
3971         * metadata.c, reflection.c: Update to changes.
3972
3973 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
3974
3975         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
3976         mono_class_is_valid_enum, they are used to valide a enum when loading.
3977         * reflection.c: used new functions to throw TypeLoadException when and
3978         invalid enum is build with TypeBuilder. Fixes #82018
3979   
3980 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
3981
3982         * object.c: forgot commit of mono_class_setup_methods () to access
3983         iface->methods.
3984         * object-internals.h: added a few more handy fields to
3985         MonoIMTCheckItem.
3986
3987 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
3990         iface->methods.
3991
3992 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
3993
3994         * class-internals.h, object-internals.h, object.c: IMT-based
3995         interface invocation core from Massimiliano Mantione
3996         (massi@ximian.com) with a reworked arch-specific interface,
3997         bsearch implementation and a few bugfixes and memory savings by me.
3998
3999 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
4000
4001         * class.c (mono_class_create_from_typedef): mono would segfault if 
4002         an enum did not have a __value field. It now throws a TypeLoadException
4003         for such cases. Fix bug #82022
4004
4005 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
4006
4007         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
4008
4009 2007-07-09  Mark Probst  <mark.probst@gmail.com>
4010
4011         * class.c (mono_class_init): If a class is already inited but has
4012         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
4013
4014 2007-07-09  Mark Probst  <mark.probst@gmail.com>
4015
4016         * class.c: Properly handle the case of an unimplemented interface
4017         method.  Fixes: 81673.
4018
4019 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
4020
4021         * class-internals.h, object.c: cleanup patch from massi: use
4022         MonoVTable->interface_bitmap since the vtable interfaces offset array
4023         is going away.
4024
4025 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
4026
4027         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
4028         GetMDStreamVersion icall instead.
4029
4030 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
4031
4032         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
4033         not use mono_dl_build_path() with a full library name: makes
4034         fallbacks to libgaim and libfam work.
4035
4036 2007-07-06  William Holmes  <billholmes54@gmail.com>
4037
4038         * assembly.c: Added a continue statement in probe_for_partial_name when
4039          parse_assembly_directory_name fails.  Fixes : 82002
4040
4041 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
4042
4043         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
4044         and added a verification  for TYPEDBYREF.
4045         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
4046         make native int interchangeable with int32 and some small cleanup and formating.
4047         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
4048         handle byref of byref.
4049         * verify.c (push_local): handle byref of byref.
4050         * verify.c (do_binop): invalid mix of values is unverifiable
4051         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
4052         added visibility checks
4053         * verify.c (field related method): added visibility checks
4054         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
4055
4056 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
4057
4058         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
4059         string.
4060
4061 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
4062
4063         * profiler.c (mono_profiler_load): Fix an off-by-one error.
4064
4065         * marshal.c (emit_marshal_string): When returning a string from managed code,
4066         allways make a copy even for unicode strings. Fixes #81990.
4067
4068 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
4069
4070         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
4071         of byref generic inst types (bug #81997).
4072
4073 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
4074
4075         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
4076         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
4077
4078 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * marshal.c (emit_marshal_string): Add support for unicode strings in
4081         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
4082
4083 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
4084
4085         * verify.c: field load/store are now verified, missing only access checks now
4086
4087 2007-06-28  Martin Baulig  <martin@ximian.com>
4088
4089         * mono-debug.c (mono_debug_debugger_version): New public variable.
4090
4091 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
4092
4093         * locales.c: When constructing DateTimeFormat or NumberFormat for
4094         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
4095         MonoCultureInfo contructed from the current locale is always
4096         read-only and has UseUserOverride set to true. All MonoCultureInfo
4097         instances returned for GetCultures have both IsReadOnly and
4098         UseUserOverride set to true. Fixes part of bug #81930.
4099
4100 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
4101
4102        * icall-def.h: Update System.__ComObject icalls
4103        * marshal.c: Avoid managed transition (and object creation)
4104        when looking up COM interface in RCW.
4105        * marshal.h: Ditto.
4106        
4107        Code is contributed under MIT/X11 license.
4108
4109 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
4112         to avoid crashes during assembly unloading.
4113
4114 2007-06-22  Raja R Harinath  <rharinath@novell.com>
4115
4116         Fix MethodInfo.IsGenericMethodDefinition
4117         * reflection.c (mono_reflection_bind_generic_method_parameters):
4118         Rearrange code to ensure we always uses a generic method definition.
4119         * class.c (mono_class_inflate_generic_method_full): Set
4120         'generic_container' field only for generic method definitions.
4121         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
4122         Use presense of 'generic_container' field as indication of being a
4123         generic method definition.
4124
4125 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4128
4129         * object-internals.h: Reflect changes in the layout of the managed Delegate
4130         class.
4131         
4132         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
4133         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
4134         runtime memory used by the dynamic method. Fixes #77146.
4135
4136 2007-06-21  Dick Porter  <dick@ximian.com>
4137
4138         * file-io.h: 
4139         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
4140         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
4141         81767.
4142
4143 2007-06-21  Raja R Harinath  <rharinath@novell.com>
4144
4145         * reflection.c (method_encode_methodspec): Add a tripwire.
4146         * class.c (inflate_generic_type): The fully open generic type is
4147         not the same as the generic type definition.
4148
4149 2007-06-21  Martin Baulig  <martin@ximian.com>
4150
4151         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
4152
4153         * mono-debug-debugger.h
4154         (MonoDebuggerBreakpointInfo): Removed.
4155         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
4156         (mono_debugger_remove_breakpoint): Likewise.
4157         (mono_debugger_breakpoint_callback): Likewise.
4158         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
4159
4160 2007-06-21  Raja R Harinath  <rharinath@novell.com>
4161
4162         * metadata.c (mono_metadata_lookup_generic_class): The fully open
4163         generic type is not the same as the generic type definition.
4164         * class.c (mono_generic_class_get_class): Likewise.
4165
4166 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
4167
4168         * icall.c: The second argument to 
4169         System.Reflection.MethodBase.GetMethodFromHandleInternalType
4170         is a MonoType not a MonoClass.
4171
4172 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
4173
4174         * verify.c: support for function pointers in the verifier
4175
4176 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
4177
4178         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
4179
4180 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
4181
4182         * assembly.c: removed Mono.Data.SqliteClient from the list of
4183         forward-compatible assemblies as it breaks the ABI (bug #81899).
4184
4185 2007-06-19  Raja R Harinath  <rharinath@novell.com>
4186
4187         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
4188         lookup/update with the loader lock.
4189         * reflection.c (mono_class_bind_generic_parameters): No need to
4190         protect mono_metadata_lookup_* with the loader lock.
4191         * class.c (inflate_generic_type): Likewise.
4192         
4193         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
4194         on a generic instantiated type.
4195
4196 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
4197
4198         *verify.c: produce meanfull error messages on verification error
4199         *verify.c: fixed some cases of verification errors reported as validation errors
4200         *pedump.c: fixed the error name array, now it shows validation errors properly
4201         *verify.h: fixed the contant that should be used for verification errors
4202
4203 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
4204
4205         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
4206         for bug #77596, 81858 and 80743 (generics data structures on domain
4207         unload).
4208
4209 2007-06-15  Raja R Harinath  <rharinath@novell.com>
4210
4211         Avoid allocating 'MonoGenericContext' on the heap.
4212         * class-internals (_MonoMethodInflated::context): Make field
4213         inline, not a pointer.
4214         * loader.c (method_from_methodspec): Allocate 'new_context' on the
4215         stack.  Use the context embedded within the inflated method as the
4216         hash key, rather than 'new_context'.
4217         * class.c (inflate_generic_context): Simplify.  Return a struct
4218         rather than allocating on the heap.
4219         (mono_class_inflate_generic_method_full): Update to changes.  Now,
4220         doesn't salt away a copy of the context -- simplifying the
4221         lifetime rules of a 'MonoGenericContext *'.
4222         (mono_method_get_context): Return pointer to embedded context.
4223         (setup_generic_array_ifaces): Allocate temporary context on stack.
4224         * reflection.c (inflate_mono_method): Likewise.
4225         (mono_reflection_bind_generic_method_parameters): Likewise.
4226         Use the context embedded within the inflated method as the hash key.
4227
4228         Avoid a source of allocation of 'MonoGenericContext'.
4229         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
4230         and 'cached_context' fields into embedded 'MonoGenericContext' field.
4231         * class.c: Update to changes.
4232         (mono_generic_class_get_context): Simplify drastically.  Now just
4233         returns a pointer to the field.
4234         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
4235         argument as a const pointer.
4236         (mono_metadata_generic_context_equal): Likewise.
4237         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
4238         Update to changes.
4239
4240 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
4241
4242         * verify.c improved the handling of brtrue/brfalse, factored out common code
4243
4244 2007-06-14  Raja R Harinath  <rharinath@novell.com>
4245
4246         Kill MonoGenericMethod.
4247         * class-internals.h (MonoGenericContext::method_inst): Rename from
4248         'gmethod' and convert to a MonoGenericInst.
4249         (MonoGenericMethod): Remove.
4250         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
4251         * loader.c (method_from_methodspec): Update to changes.  Use a
4252         MonoGenericContext as the key to the hashtable.
4253         * metadata.c (mono_metadata_generic_context_equal): Rename from 
4254         'mono_metadata_generic_method_equal' and take MonoGenericContext.
4255         (mono_metadata_generic_context_hash): Likewise from
4256         'mono_metadata_generic_method_hash'.  Change hash function.
4257         (mono_metadata_load_generic_params): Update to changes.
4258         (mono_get_shared_generic_method): Remove.
4259         * metadata-internals.h (mono_get_shared_generic_method): Remove.
4260         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
4261         (inflate_generic_context): Likewise.
4262         (mono_class_inflate_generic_method_full): Likewise.
4263         (setup_generic_array_ifaces): Likewise.
4264         (mono_class_create_from_typespec): Likewise.
4265         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
4266         (method_encode_methodspec): Update callsite.
4267         (reflection_methodbuilder_to_mono_method): Update to changes.
4268         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
4269         MonoGenericContext as the key to the hashtable.
4270         (inflate_mono_method): Update to changes.
4271
4272         * class-internals.h (MonoGenericMethod::container): Remove.
4273         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
4274
4275 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
4276
4277         * profiler-private.h, profiler.c, profiler.h: added API to profile
4278         exception events.
4279
4280 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
4281
4282         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
4283
4284 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
4285
4286         * verify.c: method invocation is now validated, now we verify parameter types on stack.
4287         Fixed overflow and underflow not aborting the verification process.
4288
4289 2007-06-13  Mark Probst  <mark.probst@gmail.com>
4290
4291         * class-internals.h (MonoStats): Added stats entries for dynamic
4292         code allocations.
4293
4294 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
4295
4296         * loader.c (mono_free_method): Free header->locals and header->clauses.
4297
4298         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
4299         dynamic case.
4300
4301         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
4302
4303         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
4304
4305 2007-06-12  Raja R Harinath  <rharinath@novell.com>
4306
4307         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
4308         the tables.
4309
4310 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
4311
4312         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
4313
4314 2007-06-11  Raja R Harinath  <harinath@gmail.com>
4315
4316         MonoGenericMethod on a diet
4317         * class-internals.h (_MonoMethodInflated::reflection_info): Move
4318         here ...
4319         (_MonoGenericMethod::reflection_info): ... from here.
4320         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
4321         Update to changes.
4322         * reflection.c (inflate_mono_method): Likewise.
4323         (mono_reflection_bind_generic_method_parameters): Likewise.
4324
4325 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
4326
4327         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
4328         *verify.c: factored long ldarg forms to share code with short forms
4329
4330 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
4331
4332         *verify.c: fixed code formating factored some duplicate code
4333         into a new function
4334
4335         *verify.h: fixed binary incompatibility introduced earlier
4336
4337         *pedump.c: fixed formating
4338
4339 2007-06-11  Raja R Harinath  <harinath@gmail.com>
4340
4341         Fix assertion when disassembling Mono.C5.dll
4342         * loader.c (method_from_methodspec): Avoid inflating a method
4343         twice with the same context.  If the methodref is inflated, use
4344         the declaring method instead.
4345
4346         * class.c (mono_class_from_generic_parameter): Fix case similar to
4347         bug #81830 handled below, but for method containers.
4348
4349 2007-06-10  Raja R Harinath  <harinath@gmail.com>
4350
4351         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
4352         get_shared_generic_class.  Directly inflate the instance.
4353         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
4354         (inflate_generic_class): Delete.
4355         (get_shared_generic_class): Delete.  Move setting of
4356         'cached_class' and 'cached_context' ...
4357         * metadata.c (mono_metadata_lookup_generic_class): ... here.
4358
4359         * metadata.c (mono_metadata_lookup_generic_class): Change
4360         signature to take the components of a MonoGenericClass rather than
4361         an allocated MonoGenericClass.  Change semantics to be intern-like.
4362         * reflection.c (mono_class_bind_generic_parameters): Update to
4363         changes.  Make locking region tighter.
4364         * class.c (inflate_generic_class): Update to changes.
4365         (get_shared_generic_class): Likewise.
4366         * metadata-internals.h: Likewise.
4367
4368         * reflection.c (mono_class_bind_generic_parameters): Take and
4369         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
4370         (mono_reflection_bind_generic_parameters): Use
4371         'mono_class_bind_generic_parameters' rather than duplicate the code.
4372         * class.c (mono_bounded_array_class_get): Update to changes.
4373         * object-internals.h: Likewise.
4374
4375         * reflection.c (mono_class_bind_generic_parameters): Only support
4376         parameterizing generic type definitions.  Remove support for other
4377         open types.
4378
4379 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
4382
4383         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
4384         in the dynamic case.
4385
4386 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
4387
4388         * threads.c: When cleaning up thread, reset the Background bit.
4389         Fixes bug #81720.
4390
4391 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
4392
4393        * metadata.c: Move variable declarations to top of scope.
4394        * verify.c: Move variable declarations to top of scope.
4395
4396        Code is contributed under MIT/X11 license.
4397
4398 2007-06-08  Raja R Harinath  <rharinath@novell.com>
4399
4400         * reflection.c (mono_class_bind_generic_parameters): Replace
4401         open-coded loop with mono_metadata_inflate_generic_inst.
4402
4403         * class.c (get_shared_generic_class): Don't call
4404         mono_get_shared_generic_inst.  Use the container's own
4405         'class_inst'.
4406
4407         * metadata.c (mono_metadata_load_generic_params): Move
4408         initialization of 'context' field here from ...
4409         * class.c (mono_class_create_from_typedef): ... here, and ...
4410         * loader.c (mono_get_method_from_token): ... here.
4411
4412         * class.c (get_shared_generic_class): Rename from
4413         mono_get_shared_generic_class and make static.
4414         (mono_get_shared_generic_inst): Move to metadata.c.
4415         * loader.c (mono_get_shared_generic_method): Likewise.
4416         * class-internals.h, metadata-internals.h: Update to changes.
4417
4418         Fix #81830
4419         * class.c (mono_class_from_generic_parameter): Don't assume a
4420         generic container owner exists.  Generic containers from monodis
4421         don't have any.
4422
4423 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
4424
4425         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
4426         * verify.h: new typedefs to returns the non-verifiable status
4427         * verify.c: initial implementation of generics, stack merging and object compatibility check
4428
4429 2007-06-06  Mark Probst  <mark.probst@gmail.com>
4430
4431         * class.c, image.c, class-internals.h (MonoImage): class_cache is
4432         a MonoInternalHashTable again (fixed bug in internal hash table
4433         code).
4434
4435 2007-06-06  Mark Probst  <mark.probst@gmail.com>
4436
4437         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
4438         MonoInternalHashTable again (fixed bug in internal hash table
4439         code).
4440
4441 2007-06-06  Mark Probst  <mark.probst@gmail.com>
4442
4443         * class.c, image.c, class-internals.h, domain.c,
4444         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
4445         changes.  Have to figure out what makes them break the SWF
4446         regression.
4447
4448 2007-06-04  Mark Probst  <mark.probst@gmail.com>
4449
4450         * class.c, image.c, class-internals.h (MonoImage): class_cache is
4451         a MonoInternalHashTable now.
4452
4453 2007-06-04  Mark Probst  <mark.probst@gmail.com>
4454
4455         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
4456         MonoInternalHashTable now.
4457
4458 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
4459
4460         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
4461         invoke_impl code.
4462
4463         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
4464
4465         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
4466         dependent trampoline.
4467
4468         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4469
4470         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
4471
4472 2007-05-29  Robert Jordan  <robertj@gmx.net>
4473
4474         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
4475
4476 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
4477
4478         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
4479
4480 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
4481
4482        * marshal.c: Fix interface lookup loops for
4483        cominterop_get_com_slot_for_method and 
4484        cominterop_get_method_interface. Only need to lookup
4485        if type is a class, else use interface type method is on.
4486
4487        Code is contributed under MIT/X11 license.
4488
4489 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
4490
4491         * reflection.c: HasSecurity can be present even if no specially 
4492         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
4493         SecurityAttribute). Fix CAS regression tests on buildbot.
4494
4495 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
4496
4497        * appdomain.c: Add configure checks for header files.
4498        * image.c: Add configure checks for header files.
4499        * file-io.c: Add configure checks for header files.
4500        * debug-mono-symfile.c: Add configure checks for header files.
4501        * threadpool.c: Add configure checks for header files.
4502        * console-io.c: Add configure checks for header files.
4503        * profiler.c: Add configure checks for header files.
4504        * rawbuffer.c: Add configure checks for header files.
4505        * icall.c: Add configure checks for header files.
4506        * rand.c: Add configure checks for header files.
4507        * socket-io.c: Add configure checks for header files.
4508
4509        Code is contributed under MIT/X11 license.
4510
4511 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * reflection.c (mono_custom_attrs_from_builders): Remove the 
4514         assertion as it breaks the build.
4515         
4516         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
4517
4518         * reflection.c (lookup_custom_attr): Make a copy here too.
4519
4520         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
4521         dynamic images.
4522
4523         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
4524         images.
4525
4526         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
4527         info.
4528
4529 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
4530
4531         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
4532         (load_cattr_value): Ditto.
4533
4534 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
4535
4536         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
4537
4538 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
4539
4540         * threads.c: In "start_wrapper", set apartment_state to MTA if
4541         apartment_state is Unknown and we're running on 2.0 profile or
4542         higher.
4543         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
4544         to main method, then set apartment_state to Unknown on 1.0 profile,
4545         and MTA on 2.0 profile.
4546
4547 2007-05-16  Jb Evain  <jb@nurv.fr>
4548
4549         * class-internals.h (MonoDefaults): Add an attribute_class and
4550           customattribute_data_class.
4551         * domain.c (mono_init_internal): Populate them.
4552         * reflection.c: Use them to remove duplicates. Make a vew
4553         MonoClass variables `static'.
4554
4555 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
4556
4557         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
4558         step in implementing IMT, so that all isinst checks now can go
4559         through the bitmap.
4560         This was needed because vtables for TransparentProxy need to look
4561         like the vtable of the "target" class, so they need to point to
4562         its interface bitmap directly.
4563
4564         * object.c: inside "mono_class_create_runtime_vtable" and
4565         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
4566
4567 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
4568
4569         * object-internals.h
4570           culture-info.h : added territory field in MonoCulture and
4571           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
4572         * locales.c : fill territory field above too.
4573         * culture-info-table.h : regenerated.
4574
4575 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
4578         Fixes #81599.
4579
4580 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
4581
4582         * object.c: Always initialize apartment, even if 
4583         there is no custom attributes on entry point.
4584         
4585         Code is contributed under MIT/X11 license.
4586
4587 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
4588
4589         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
4590         * metadata.c: If no encoding is set, check for unicode
4591         on class.
4592         
4593         Code is contributed under MIT/X11 license.
4594
4595 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
4596
4597         * threads.c: Handle if mono_thread_current returns NULL 
4598         
4599         Code is contributed under MIT/X11 license.
4600
4601 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
4602
4603         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
4604         in start_wrapper. Added mono_thread_init_apartment_state and
4605         mono_thread_cleanup_apartment_state.
4606         * object.c: Initialize thread apartment state on main thread
4607         by checking for STAThreadAttribute on entry point.
4608         * object-internals.h: Add apartment_state field to MonoThread.
4609         * threads-types.h: Add unmanaged definition of 
4610         System.Threading.ApartmentState, MonoThreadApartmentState.
4611         
4612         Code is contributed under MIT/X11 license.
4613         
4614 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
4615
4616         * class.c: Fix windows build.
4617         * class-internals.h: Fix windows build.
4618         
4619         Code is contributed under MIT/X11 license.
4620
4621 2007-05-08  Robert Jordan  <robertj@gmx.net>
4622
4623         * process.c (CreateProcess_internal):
4624         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
4625         .CreateNoWindow was specified. Fixes #81496.
4626
4627 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
4628
4629         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
4630         step in implementing IMT, replaced it with two compact arrays
4631         (interfaces_packed and interface_offsets_packed) and a bitmap that
4632         is used for isinst checks (interface_bitmap).
4633
4634         * class.c: (compare_interface_ids): compare function to pass to
4635         bsearch when looking for an interface with a given id.
4636         (mono_class_interface_offset): reimplemented using bsearch on
4637         interfaces_packed, getting the offset from interface_offsets_packed.
4638         (print_implemented_interfaces): utility debugging function.
4639         (setup_interface_offsets): reworked to initialize interfaces_packed,
4640         interface_offsets_packed and interface_bitmap.
4641
4642         * object.c: replaced all accesses to "MonoClass.interface_offsets"
4643         with uses of interfaces_packed and interface_offsets_packed.
4644
4645 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
4646
4647         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
4648         mono_class_interface_offset prototype to wrap all accesses to
4649         "MonoClass.interface_offsets".
4650
4651         * class.c: Implemented mono_class_interface_offset, and wrapped all
4652         accesses to "MonoClass.interface_offsets".
4653
4654         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
4655         "MonoClass.interface_offsets".
4656
4657 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
4658
4659         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
4660         GetMethodFromHandle overloads (bug #78637).
4661
4662 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
4663
4664         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
4665         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
4666
4667 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
4668
4669         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
4670         #81498.
4671
4672         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
4673         gracefully.
4674         (mono_custom_attrs_from_index): Ditto.
4675
4676         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
4677         Fixes #81501.
4678
4679 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
4682         is now allocated from a mempool.
4683
4684 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
4687         caller holds threads_lock, leading to deadlocks. Fixes #81476.
4688
4689 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
4690
4691         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
4692         mono_loader_clear_error () too late. Fixes #81463.
4693
4694 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
4695
4696         * culture-info-table.h : regenerated.
4697
4698 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
4699
4700         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
4701         is missing.
4702
4703 2007-04-25  Dick Porter  <dick@ximian.com>
4704
4705         * Makefile.am: Put the mingw enforced-optimisation back into the
4706         PLATFORM_WIN32 section.
4707
4708 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
4709
4710         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
4711         patch.
4712
4713         * image.c (mono_image_load_module): New API function to load a module reference.
4714
4715         * image.c (load_modules): Load modules lazily. Fixes #80812.
4716
4717         * class.c (mono_class_from_typeref): Use mono_image_load_module.
4718         
4719         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
4720
4721         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
4722         to mono_image_load_module_dynamic.
4723
4724 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
4725
4726         * marshal.c: Fix calling convention for CCW on non-windows
4727         platforms. STDCALL on windows, CDECL everywhere else to work 
4728         with XPCOM and MainWin COM.
4729         
4730         Code is contributed under MIT/X11 license.
4731
4732 2007-04-23  Martin Baulig  <martin@ximian.com>
4733
4734         Fix #80969.
4735
4736         * loader.c
4737         (method_from_memberref): Added `gboolean *used_context' argument.
4738         (mono_get_method_from_token): Likewise.
4739         (mono_get_method_full): Don't insert the method in the cache when
4740         `used_context' is true.
4741
4742 2007-04-23  Raja R Harinath  <rharinath@novell.com>
4743
4744         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
4745
4746         * reflection.c (mono_reflection_bind_generic_parameters): Don't
4747         create new MonoTypes for returned types.
4748         * class.c (mono_generic_class_get_class): Export mono-internal.
4749         * class-internals.h: Update to changes.
4750
4751 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4752
4753         * threadpool.c, threadpool.h, icall-def.h: patch from
4754         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
4755
4756 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
4759         
4760         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
4761
4762         * threads.c (mono_thread_get_stack_bounds): New helper function.
4763
4764         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
4765         Correctly compute stack bounds when attaching. Fixes #81394.
4766
4767 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
4768
4769         * reflection.c: fix handling of doubles in custom attributes
4770         for the arm-fpa format (bug #81368).
4771
4772 2007-04-18  Raja R Harinath  <rharinath@novell.com>
4773
4774         * reflection.c (assembly_add_win32_resources): Mildly relax an
4775         bounds check to let the end pointer point just past the end of the
4776         allocated buffer.  (may fix #81384)
4777
4778 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4779
4780         * culture-info-table.h : regenerated.
4781
4782 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
4785         the thread is aborted early.
4786
4787 2007-04-05  Dick Porter  <dick@ximian.com>
4788
4789         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
4790         FindFirstFile()/FindNextFile() to find entries.  This lets the
4791         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
4792         81038.
4793
4794         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
4795         the parameters of
4796         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
4797
4798 2007-04-04  Martin Baulig  <martin@ximian.com>
4799
4800         * debug-helpers.c
4801         (mono_method_desc_full_match): Add support for nested classes.
4802
4803 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
4806
4807 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
4810         waiting for too many threads.
4811
4812 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
4813
4814         * environment.c: Fix return value check on uname so we can get the 
4815         executing version on Solaris operating systems.
4816
4817 2007-03-28  Jb Evain  <jbevain@gmail.com>
4818
4819         * class.c (mono_type_get_name_recurse): Complete the
4820         fix for the creation of assembly qualified names for
4821         pointer types. Fixes #81208.
4822
4823 2007-03-27  Dick Porter  <dick@ximian.com>
4824
4825         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
4826         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
4827         changed.
4828
4829         * threads.c
4830         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
4831         the value of ReleaseMutex().
4832
4833 2007-03-27  Dick Porter  <dick@ximian.com>
4834
4835         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
4836         in little-endian order, not network endian, so must be converted
4837         to host endian here.  Fixes bug 80593.
4838
4839 2007-03-22  Jb Evain  <jbevain@gmail.com>
4840
4841         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
4842         qualified names for pointer types. Fixes #81208.
4843
4844 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
4845
4846         * marshal.c: Add support for PreserveSigAttribute. 
4847         
4848         Code is contributed under MIT/X11 license.
4849
4850 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
4851
4852         * process.c: Fix endianness issues. Fixes #81126.
4853
4854         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
4855         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
4856
4857         * image.c (mono_image_lookup_resource): Make this work on big-endian
4858         machines.Change API contract so the caller needs to free the return value.
4859         
4860         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
4861         API change.
4862         
4863 2007-03-14  Martin Baulig  <martin@ximian.com>
4864
4865         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
4866         mono_type_get_desc() as well.
4867
4868 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
4869
4870         * icall.c:  Fix environ access in VS.  
4871         
4872 2007-03-13  Alp Toker  <alp@atoker.com>
4873
4874         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
4875         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
4876         #63841.
4877
4878 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
4879
4880         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
4881         circular references among dynamic methods. Fixes #81091.
4882
4883         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
4884
4885 2007-03-09  Martin Baulig  <martin@ximian.com>
4886
4887         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
4888
4889 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
4890
4891         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
4892         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
4893         
4894         Code is contributed under MIT/X11 license.
4895         
4896 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
4897
4898         * loader.c: Reapply patch for bug #79424.
4899
4900 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * metadata.c (mono_type_to_unmanaged): Only convert object to
4903         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
4904
4905 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
4906
4907         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
4908         (and incorrectly set) is_reference field from MonoGenericInst.
4909
4910 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
4911
4912         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
4913         a little earlier.
4914
4915         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
4916
4917         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
4918
4919 2007-03-05  Miguel de Icaza  <miguel@novell.com>
4920
4921         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
4922         FileOptions.1 value to mean "temporary", map that to
4923         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
4924
4925         Fixes 80688
4926
4927 2007-03-03  Marek Habersack  <mhabersack@novell.com>
4928
4929         * appdomain.c: implement MS .Net style shadow copying. Copies of
4930         the assemblies are made in a subdirectory of the dynamic base
4931         directory, the assembly names are preserved.
4932         Copy .mdb and .config files along with the assemblies being shadowed.
4933
4934 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
4935
4936         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
4937         (emit_marshal_handleref): Ditto.
4938
4939         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
4940         on Visual C++. Fixes #80671.
4941
4942 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
4943
4944         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
4945         for clone operations.
4946
4947 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
4948
4949         * marshal.c: Fix warnings.
4950
4951 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
4952
4953         * loader.c: allow case-insensitive matching of the dll name
4954         in dllmap handling when prefixed with "i:".
4955
4956 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
4957
4958         * threads.c: Fix #ifdef for dummy_apc function for VS.
4959
4960 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
4961
4962         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
4963
4964 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
4965         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
4966         giving precedence to the methods with a fully qualified name
4967         (InterfaceName.MethodName) when building the interface sections
4968         of the vtable.
4969
4970 2007-02-16  Dick Porter  <dick@ximian.com>
4971
4972         * threadpool.c (append_job): Fix fast-path array handling, so it's
4973         less likely the array will grow exponentially when the load is
4974         heavy.
4975
4976 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
4977
4978         * metadata-internals.h, loader.c: fix dllmap lookup order
4979         for non-function maps, too, and prepare for fallback code.
4980
4981 2007-02-12  Robert Jordan  <robertj@gmx.net>
4982
4983         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
4984         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
4985         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
4986         GlobalFree. Fixes a part of bug #77075.
4987
4988 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
4989
4990         * loader.c: implemented typedef parent in field memberref.
4991
4992 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
4993
4994         * marshal.c: Fix warnings and remember to call Release on
4995         IUnknown of RCW.
4996         
4997         Code is contributed under MIT/X11 license.
4998
4999 2007-02-10  Miguel de Icaza  <miguel@novell.com>
5000
5001         * class-internals.h: Add MonoHandleRef definition, and
5002         handleref_class to mono_defaults. 
5003
5004         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
5005         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
5006
5007         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
5008         (do nothing on this stage)
5009         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
5010         (emit_marshal_handleref): New method, used for argument handling
5011         of HandleRefs. 
5012
5013 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
5014
5015         * class.c (mono_class_setup_parent): Lazily init com types.
5016         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
5017         init com types.
5018         * object.c (mono_remote_class_vtable): Lazily init com types.
5019         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
5020         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
5021         * domain-internals.h: Expose mono_init_com_types.
5022         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
5023         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
5024         Add support for COM Callable Wrapper marshalling.
5025         * marshal.h: Add icall definitions.
5026         * gc.c: Handle freeing of CCWs in finalizer code.
5027         
5028         Code is contributed under MIT/X11 license.
5029
5030 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
5031
5032         * reflection.c: changed all the signature encoding code to use
5033         a variable-sized buffer.
5034
5035 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5036
5037         * marshal.c: locking fixes: never take the loader lock
5038         or other runtime locks when holding the marshal lock
5039         (fixes bug#80664).
5040
5041 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
5042
5043         * marshal.c: make the delegate function pointer mapping
5044         work for the moving GC.
5045
5046 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
5047
5048         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
5049         for bug #80618.
5050
5051 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5052
5053         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
5054         gmodule.
5055
5056 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
5057
5058         * threadpool.c: made the code moving-GC safe.
5059
5060 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
5061
5062         * assembly.c, boehm-gc.c, class-internals.h, class.c,
5063         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
5064         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
5065         warning cleanup.
5066         * reflection.c: warning cleanup, some threading and moving GC fixes.
5067
5068 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
5069
5070         * class.c, loader.c: create the needed Set/Get/Address array methods
5071         as well as the .ctors in mono_class_init (), fixes bug #80567.
5072
5073 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
5074
5075         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
5076         we doesn't decrease its alignment. Should fix the sparc build.
5077
5078 2007-01-24  Dick Porter  <dick@ximian.com>
5079
5080         * socket-io.c
5081         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
5082         Create the returned object if we need to ignore an unsupported
5083         socket option.  Fixes a segfault reported by Atsushi.
5084
5085 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
5086
5087         * class.c, object.c: restrict GC-tracked fields to
5088         UIntPtr fields used inside corlib, so we provide better
5089         type info to the GC and also allow broken packing as in
5090         bug #80580.
5091
5092 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
5093
5094         * sgen-gc.c: removed duplicated function.
5095
5096 2007-01-19  Miguel de Icaza  <miguel@novell.com>
5097
5098         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
5099         value that means that the value is not supported, but that we
5100         should not return a failure, but instead report this as a
5101         successful operation.
5102
5103 2007-01-19  Raja R Harinath  <rharinath@novell.com>
5104
5105         Fix tests/bug79956.2.il
5106         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
5107         (mono_generic_class_get_class): If the generic definition in an
5108         enum, copy over other fields related to it.
5109
5110 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
5111
5112         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
5113         genericinst enums (bug #79215).
5114
5115 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
5116         * class.c: Fix bug 80307.
5117
5118 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
5119
5120         * image.c: if the file table is not present, try to load
5121         all the modules, since we don't have info about them
5122         having or not metadata (bug #80517).
5123         * assembly.c: allow mono_assembly_load_references () to
5124         work for netmodules.
5125
5126 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
5127
5128         * image.c, metadata-internals.h, object.c: execute module
5129         cctors when running on the 2 runtime if present (bug #80487).
5130
5131 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
5132
5133         * icall.c: optimized InitializeArray() on bigendian.
5134
5135 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
5136
5137         * icall.c: fix for the broken ARM FPA double format.
5138
5139 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
5140
5141         * icall.c: handle endian issues for r4 and r8 types, too, in
5142         the InitializeArray() icall.
5143
5144 2007-01-15  Miguel de Icaza  <miguel@novell.com>
5145
5146         * loader.c (mono_loader_error_prepare_exception): Clear the error
5147         once we have extracted the information from it, do this before we
5148         call into the JIT's class loading mechanisms.
5149
5150         * object.c (mono_class_create_runtime_vtable): Do not clear the
5151         loader error before calling mono_class_get_exception_for_failure
5152         as the loader error is needed inside
5153         mono_class_get_exception_for_failure to throw the error (thinko).
5154
5155         Fixes #80521
5156         
5157 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
5158
5159         * reflection.c: align fields rva data so it's faster to load at
5160         runtime.
5161
5162 2007-01-12  Raja R Harinath  <rharinath@novell.com>
5163
5164         Prepare to simplify GenericMethod handling.
5165         * class-internals.h (mono_method_get_context): New accessor function.
5166         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
5167         rather than directly accessing '->context' field.
5168
5169         * class-internals.h (_MonoGenericParam.method): Move ...
5170         (_MonoGenericContainer): ... here.  Add into union with klass field.
5171         * class.c, icall.c, loader.c, metadata.c, reflection.c:
5172         Update to changes.
5173
5174 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
5175
5176         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
5177         the wrapper type enum and reduce relocations.
5178
5179 2007-01-12  Raja R Harinath  <rharinath@novell.com>
5180
5181         * reflection.c (inflate_mono_method): Reuse method instantiation
5182         from the generic method, if available.
5183
5184 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
5185
5186         * marshal.c (emit_marshal_variant): Fix conv_arg
5187         type in last commit, based on whether parameter is byref.
5188         
5189 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
5190
5191         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
5192         marshalling.
5193         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
5194         MONO_TYPE_OBJECT back for VARIANT support.
5195
5196 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
5197
5198         * marshal.c, marshal.h, icall-def.h: Implement 
5199         Marshal.ReAllocCoTaskMem.
5200
5201 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
5202
5203         * marshal.c: memory retention fixes: use the proper
5204         image cache for runtime_invoke method lookups.
5205
5206 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
5207
5208         * mempool.c: added code to help debug mempool allocations.
5209
5210 2007-01-11  Dick Porter  <dick@ximian.com>
5211
5212         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
5213         support (experimenting with faking it with IP_MTU_DISCOVER for
5214         systems that don't have IP_DONTFRAGMENT.)
5215         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
5216         icall.
5217
5218         * icall-def.h: new System.Net.Sockets.Disconnect icall.
5219
5220         * socket-io.h: Add new fields to MonoSocketAsyncResult
5221         corresponding to the new ones in Socket.cs.
5222
5223 2007-01-11  Raja R Harinath  <rharinath@novell.com>
5224
5225         Fix IronPython regression mentioned in #80249
5226         * metadata.c (do_mono_metadata_parse_generic_class): Clear
5227         'cached_context' field, since it may have been initialized as a
5228         side-effect of metadata parsing.
5229
5230         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
5231         (_MonoGenericClass.cached_class): Move here and rename from lone
5232         remaining field of ...
5233         (_MonoInflatedGenericClass): ... this.  Remove.
5234         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
5235         to changes.
5236
5237         Fix mcs/tests/test-128.cs regression.
5238         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
5239         2007-01-10 change below.
5240         [MONO_TYPE_OBJECT]: Recurse into array case.
5241
5242 2007-01-11  Raja R Harinath  <harinath@gmail.com>
5243
5244         * class-internals.h (mono_get_inflated_generic_class): Remove.
5245         * class.c (mono_get_inflated_generic_class): Remove.
5246         (mono_generic_class_get_class): Rename from
5247         mono_class_create_generic.
5248         (mono_class_from_mono_type) [GENERICINST]: Use it.
5249         * reflection.c, metadata.c: Update to changes.  Use
5250         'mono_class_from_mono_type'.
5251
5252 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
5253
5254         * reflection.c: use passed type when encoding an array element
5255         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
5256
5257 2007-01-09  Robert Jordan  <robertj@gmx.net>
5258
5259         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
5260         result arguments (someDelegate.EndInvoke (unrelatedAres)).
5261         Fixes bug #80392.
5262
5263 2007-01-09  Raja R Harinath  <rharinath@novell.com>
5264
5265         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
5266
5267         * object.c (set_value): Avoid aliasing between type->data.klass
5268         and type->data.generic_class.
5269
5270         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
5271
5272 2007-01-08  Raja R Harinath  <rharinath@novell.com>
5273
5274         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
5275         between type->data.klass and type->data.generic_class.
5276
5277 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
5278
5279         * marshal.c: In MS.NET, StringBuilder objects are not copied by
5280         value in out parameters.
5281
5282 2007-01-08  Raja R Harinath  <rharinath@novell.com>
5283
5284         Simplify invariant for MonoGenericClass::klass field.
5285         * class.c (mono_class_create_generic): Verify 'klass' is null.
5286         * metadata.c (do_mono_metadata_parse_generic_class): Don't
5287         initialize 'klass' field.
5288
5289 2007-01-05  Raja R Harinath  <rharinath@novell.com>
5290
5291         Ongoing work to avoid redundant data and simplify invariants.
5292         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
5293         'generic_class', and change type to a GenericInst.
5294         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
5295         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
5296
5297 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
5298
5299         * class.c : skip io-layer under PLATFORM_WIN32.
5300
5301 2007-01-03  Tor Lillqvist  <tml@novell.com>
5302
5303         Fix #80305: In a bundled executable, look in the bundled exe
5304         assembly to determine the runtime version. Add the possibility to
5305         bundle also the machine.config file.
5306         
5307         * assembly.c (mono_assembly_open_from_bundle): Make
5308         non-static. Allow being called even if we have no bundled
5309         assemblies, and return NULL right away in that case.
5310
5311         * domain-internals.h: Declare mono_assembly_open_from_bundle()
5312         here.
5313
5314         * domain.c (app_config_parse): Take an assembly exe file name as
5315         parameter instead of a config file name. Check for a bundled
5316         config file for that assembly by calling
5317         mono_config_string_for_assembly_file() (see below) before looking
5318         for one in the file system.
5319         (get_runtimes_from_exe): Corrsponding change to call of
5320         app_config_parse().
5321         (get_runtimes_from_exe): Check for bundled assembly exe file first
5322         by calling mono_assembly_open_from_bundle(). If no bundled
5323         assembly exe file is found, call mono_image_open() as before to
5324         look it up in the file system.
5325
5326         * mono-config.c: Add variable bundled_machinec_onfig.
5327         (mono_config_string_for_assembly_file): New function.
5328         (mono_config_for_assembly): Move code snippet that looks for a
5329         bundled assembly .config file into the above new function. Call
5330         it.
5331         (mono_register_machine_config, mono_get_machine_config): New
5332         functions to set and retrieve
5333
5334         * assembly.h: Declare mono_register_machine_config().
5335
5336         * mono-config.h: Declare mono_get_machine_config() and
5337         mono_config_string_for_assembly_file().
5338
5339         * icall.c: No declaration of environ necessary on Win32. It is
5340         declared (as a macro expanding to a function call) in stdlib.h.
5341         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
5342         New internal mono function. Returns the value of
5343         mono_get_machine_config() as a Mono string.
5344
5345         * icall-def.h: Add get_bundled_machine_config().
5346
5347 2007-01-04  Raja R Harinath  <rharinath@novell.com>
5348
5349         Remove redundant field
5350         * class-internals.h (_MonoGenericContext.container): Remove field.
5351         * loader.c (mono_method_get_signature_full): Don't parse a
5352         "container" for a signature parse when the signature is inflated
5353         immediately.
5354         (method_from_methodspec): Likewise, for a generic_inst.
5355         * class.c, metadata.c, reflection.c: Update to changes.
5356
5357 2006-01-04  Raja R Harinath  <rharinath@novell.com>
5358
5359         * class-internals.h (_MonoGenericClass): Rename 'context' field to
5360         'cached_context', and change semantics -- it starts off NULL, and
5361         is initialized on demand.
5362         * class.c (mono_generic_class_get_context): New accessor to
5363         replace 'context' field accesses.
5364         (mono_class_get_context): New helper.
5365         (*): Update to changes.
5366         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
5367
5368 2007-01-03  Miguel de Icaza  <miguel@novell.com>
5369
5370         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
5371         before the memcpy.   Fixes Marshal2 regression.
5372
5373 2007-01-02  Jb Evain  <jbevain@gmail.com>
5374
5375         * blob.h: add a MONO_TYPE_ENUM definition
5376         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
5377         fix the encoding of arrays of enums in custom attributes.
5378
5379         Fixes #79666.
5380
5381 2007-01-01  Miguel de Icaza  <miguel@novell.com>
5382
5383         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
5384         string is null terminated, but only cut the string short if it
5385         overflows the buffer.   
5386         
5387         (mono_string_to_byvalstr): Also fix this routine.   The code here
5388         was not properly terminating a string (it was only terminated
5389         because of the previous catch-all memset). 
5390
5391         I left the memset, because I do not know if applications expect
5392         the runtime to clear this region. 
5393
5394         Fixes #79944.
5395
5396         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
5397         Clear the error before returning to unmanaged code to prevent the
5398         runtime from being confused later on (fixes  80420).
5399         (ves_icall_type_from_name): Always call mono_loader_clear_error
5400         after parsing a type that could have failed.
5401         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
5402
5403         * loader.c (mono_loader_clear_error): Fix indentation.
5404
5405 2006-12-28  Martin Baulig  <martin@ximian.com>
5406
5407         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
5408
5409 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
5410
5411         * reflection.c: patch from Rolf Bjarne Kvinge to fix
5412         getting a token for an EnumBuilder.
5413
5414 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
5415
5416         * reflection.c: be more careful in case resource generation
5417         fails to create the data array.
5418
5419 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
5420
5421         * sgen-gc.c: write barrier for clone and fix unregister handles.
5422
5423 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
5424
5425         * reflection.c: some fixes needed in the generics code for the moving GC.
5426
5427 2006-12-22  Robert Jordan  <robertj@gmx.net>
5428
5429         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
5430         account. Fixes bug #80299.
5431
5432 2006-12-21  Raja R Harinath  <rharinath@novell.com>
5433
5434         Fix WaitHandle usage in delegates.
5435         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
5436         * object.c (mono_wait_handle_new): Use the property set method to
5437         initialize the handle.
5438         (mono_wait_handle_get_handle): New.
5439         * threadpool.c (mono_async_invoke): Use it.
5440         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
5441         Likewise.
5442         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
5443
5444 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
5445
5446         * marshal.c (emit_marshal): Call emit_marshal_variant and
5447         emit_marshal_com_interface when applicable.
5448         (emit_marshal_variant, emit_marshal_com_interface): Add
5449         methods for this case and remove if's from emit_marshal_object.
5450         
5451 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
5452
5453         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
5454
5455 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
5456
5457         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
5458         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
5459         and GlobalFree on Windows. Remove FIXME.
5460
5461 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
5462
5463         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
5464         implementation for managed objects.
5465
5466 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
5467
5468         * object.c: implemented code to be used for checking
5469         that no reference field overlaps with non-references.
5470
5471 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5472
5473         * threadpool.c: fix queue code to be compatible with the
5474         moving GC.
5475
5476 2006-12-18  Miguel de Icaza  <miguel@novell.com>
5477
5478         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
5479         in structures by throwing ArgumentNullException.
5480
5481         (emit_marshal_safehandle): Also when they are null parameters.
5482
5483         (emit_marshal_safehandle): Add support for ref
5484         SafeHandles parameters
5485
5486 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
5487
5488         * profiler.c: updated to use the mono-dl API instead of
5489         gmodule.
5490
5491 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5492
5493         * profiler.c: updated to use the mono-dl dynamic loading
5494         API instead of gmodule.
5495
5496 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
5497
5498         * profiler.c: use readlink, older versions of glib don't have
5499         g_file_read_link ().
5500
5501 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
5502
5503         * profiler.c: try to detect the path to mono if libc fails to provide
5504         a useful name (bug #80286).
5505
5506 2006-12-16  Raja R Harinath  <rharinath@novell.com>
5507
5508         Fix #80242
5509         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
5510         instance, use the generic type definition instead.
5511         (ves_icall_Type_GetNestedTypes): Likewise.
5512         * class.c (mono_class_create_generic): Always set the
5513         nested_classes of a generic instance to NULL, even if the generic
5514         type definition has nested types.
5515
5516 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
5517
5518         * marshal.c (mono_string_from_bstr): Revert previous Windows change
5519         and fix on Linux.
5520         
5521 2006-12-15  Miguel de Icaza  <miguel@novell.com>
5522
5523         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
5524         my arguments were in the wrong order.   I also fixed the Windows
5525         version which seems to have had the same issue.
5526
5527         (mono_free_bstr): On Unix, this is g_free.
5528         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
5529         conversions (for the tests in corlib to pass).
5530
5531 2006-12-14  Miguel de Icaza  <miguel@novell.com>
5532
5533         * marshal.c (emit_ptr_to_object_conv): For now, ignore
5534         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
5535         exception if a ref SafeHandle in a struct has changed).
5536         
5537         (emit_struct_conv): Do not perform layout checks for classes
5538         derived from SafeHandle, as those are specially handled. 
5539
5540         (emit_object_to_ptr_conv): Add support for
5541         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
5542
5543         (emit_marshal_safehandle): Implement conversion of return values
5544         of safehandles (MARSHAL_ACTION_CONV_RESULT).
5545         
5546         * threads.c: WaitHandle now is compiled with two different handles
5547         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
5548         for 2.0.
5549         
5550         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
5551         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
5552         these routines to cope with both kinds of fields.
5553
5554 2006-12-12  Miguel de Icaza  <miguel@novell.com>
5555
5556         * metadata.c (mono_type_to_unmanaged): Handle the case where
5557         type->data.klass is a SafeHandle, and in that case, return the
5558         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
5559         MONO_MARSHAL_CONV_SAFEHANDLE. 
5560
5561 2006-12-11  Miguel de Icaza  <miguel@novell.com>
5562
5563         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
5564         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
5565         calling emit_marshal_object.
5566
5567         (emit_marshal_safehandle): Implement marshalling of
5568         SafeHandle parameters (no ref support yet).
5569
5570         (MarshalAction): Document the defines as I implement
5571         them for SafeHandle.
5572
5573         (emit_marshal_object): indentation police.
5574
5575         * class-internals.h: Define MonoSafeHandle.
5576         Add safehandle_class to MonoDefaults type.
5577
5578         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
5579         list of classes to check for fields. 
5580
5581         * domain.c (mono_init_internal): Add SafeHandle to the list of
5582         mono_defaults loaded.
5583
5584 2006-12-15  Raja R Harinath  <rharinath@novell.com>
5585
5586         Fix #80253
5587         * reflection.c (mono_reflection_bind_generic_parameters): If the
5588         generic type definition is a type builder, ensure that it is fully
5589         initialized before instantiating it.  Kill some dead code.
5590
5591 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
5592
5593         * object.c: clear the loader_error () before loading
5594         more metadata stuff (bug #80258).
5595
5596 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
5597
5598         * icall.c, icall-defs.h: type modifiers icalls for
5599         parameters and properties.
5600
5601 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
5602
5603         * object.c, icall.c: fixed warnings.
5604
5605 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
5606
5607         * marshal.c: fixed a couple of leaks and coding style in a few places.
5608
5609 2006-12-08  Dick Porter  <dick@ximian.com>
5610
5611         * process.c: Cope with NULL ProcessStartInfo arguments on windows
5612         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
5613         80173.
5614
5615 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
5616
5617         * process.c: ProcessStartInfo may have only filename set and
5618         arguments can be NULL.
5619
5620 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
5621
5622         * icall.c: fix leak found by Robert Jordan.
5623
5624 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
5625
5626         * marshal.c, marshal.h: generate managed method to access an element
5627         of a multi-dimensional array.
5628
5629 2006-11-30  Paolo Molaro (lupus@ximian.com)
5630
5631         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
5632
5633 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5634
5635         * icall.c: back out GetFields () fix until the serialization code is
5636         fixed to not depend on the incorrect behaviour.
5637
5638 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
5639
5640         * profiler.c: provide defaults if none are set.
5641
5642 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
5643
5644         * Makefile.am, attrdefs.h: new public header file with
5645         constants for attributes for use by embedders.
5646
5647 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
5648
5649         * icall.c: GetFields () fix for bug #80064.
5650
5651 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
5652
5653         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
5654         removed long unused icalls.
5655
5656 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
5657   
5658         * marshal.c: 
5659                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
5660                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
5661                 can be generated without a delegate class.
5662                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
5663         
5664         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
5665
5666 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5667
5668         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
5669         #80069.
5670
5671 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
5672
5673         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
5674         icall-def.h: added icalls needed by System.GC.
5675
5676 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
5677
5678         * loader.c: ensure the class in catch clauses is handled
5679         correctly for generics methods (fixes bug#79980).
5680
5681 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
5682
5683         * monitor.h, monitor.c: added mono_locks_dump () function
5684         to help debug deadlocks involving managed locks.
5685
5686 2006-11-13  Dick Porter  <dick@ximian.com>
5687
5688         * file-io.c (get_file_attributes): If the file is a symlink try
5689         and get the stat data for the target, but also add the
5690         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
5691         the specs for the windows symlink support, but will probably have
5692         to be reworked when I have test data from a vista machine.  Fixes
5693         bug 79887.
5694
5695 2006-11-13  Dick Porter  <dick@ximian.com>
5696
5697         * gc.c (mono_domain_finalize): 
5698         * marshal.c (mono_delegate_begin_invoke): 
5699         * threadpool.c (socket_io_init, mono_thread_pool_init)
5700         (mono_thread_pool_finish): 
5701         * monitor.c (mono_monitor_try_enter_internal): 
5702         * threads.c (mono_thread_resume, mono_thread_init)
5703         (mono_thread_suspend_all_other_threads)
5704         (mono_thread_execute_interruption): 
5705         * appdomain.c (mono_domain_unload): Check for NULL error returns
5706         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
5707         75733.
5708
5709 2006-11-11  Miguel de Icaza  <miguel@novell.com>
5710
5711         * process.c
5712         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
5713         Only close the handle if the value of the handle is not
5714         INVALID_HANDLE_VALUE.  This just makes the process a bit more
5715         robust.
5716
5717         Improvement for #75733, so that we do not run into this problem. 
5718
5719         
5720         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
5721         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
5722         internal variables.  Fixes #79462 
5723         
5724
5725 2006-11-09  Dick Porter  <dick@ximian.com>
5726
5727         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
5728         Use poll() not select().  Fixes bug 79397.
5729
5730 2006-11-09  Raja R Harinath  <rharinath@novell.com>
5731
5732         Fix #79872
5733         * assembly.c (mono_assembly_load_from_full): Check that the given
5734         image has an assembly manifest.
5735
5736 2006-11-09  Ankit Jain  <jankit@novell.com>
5737
5738         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
5739         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
5740         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
5741
5742 2006-11-07  Dick Porter  <dick@ximian.com>
5743
5744         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
5745         Put the old resolver behaviour back for pre-2.0 profiles.
5746
5747 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
5748
5749         * threadpool.c: precise GC and locking fixes.
5750
5751 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
5752
5753         * class.c: don't load types that have an explicit unaligned
5754         managed reference. Provide better info in the TypeLoad exception.
5755         Part of the fix for bug #79744.
5756         * object.c: use the correct check for class type load issues.
5757
5758 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
5759
5760         * class.c: enforce alignment of fields with managed references
5761         even when Pack=1 is forced by the user (bug #77788).
5762
5763 2006-11-03  Dick Porter  <dick@ximian.com>
5764
5765         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
5766         If the address reverse lookup fails, return it as the hostname
5767         anyway.  Fixes bug 79721.
5768
5769 2006-11-03  Dick Porter  <dick@ximian.com>
5770
5771         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
5772         Fix build on Windows.
5773
5774 2006-11-02  Dick Porter  <dick@ximian.com>
5775
5776         * icall-def.h: 
5777         * object-internals.h: 
5778         * exception.c (mono_get_exception_thread_interrupted): 
5779         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
5780         Fixes bug 74525.
5781
5782         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
5783         Check for pending Thread.Interrupt.
5784
5785 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
5786         * loader.c: Fixed bug 79684.
5787
5788 2006-10-27  Dick Porter  <dick@ximian.com>
5789
5790         * file-io.c (get_file_attributes): Force symlinks to directories
5791         to be returned as a regular file.  Fixes bug 79733.
5792 2006-10-26  Dick Porter  <dick@ximian.com>
5793
5794         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
5795         CreateFile to open a directory then we need to set the
5796         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
5797
5798 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
5801         friends.
5802
5803 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
5804
5805         * sgengc.c: small cleanup of timer code.
5806
5807 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
5808
5809         * sgen-gc.c: fix some warnings and start adding support for
5810         complete object removal on domain unload.
5811
5812 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
5813
5814         * assembly.c: build_assembly_name should not consider a version
5815         number without build or revision number invalid. Fixes bug #79715.
5816
5817 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
5818
5819         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
5820         call kernel32 function OutputDebugString directly.
5821         
5822         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
5823         
5824 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
5825
5826         * reflection.c: small cleanup, using a function to insert a MonoString
5827         in the string heap.
5828
5829 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
5830
5831         * reflection.c: moving GC fixes.
5832
5833 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
5834
5835         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
5836         all the objects with finalizers belonging to an unloading appdomain.
5837
5838 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
5839
5840         * sgen-gc.c: added ability to allocate even when the nursery is fully
5841         pinned and fixed a couple of bugs.
5842
5843 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * threads.h: Revert the last change for now.
5846
5847         * threads.h (mono_thread_get_pending_exception): Rename this to
5848         mono_thread_get_undeniable_exception ().
5849
5850 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
5851
5852         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
5853         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
5854         when fname does not refer to valid assembly. This result in a more
5855         meaningful error message.
5856         * exception.c: added mono_get_exception_bad_image_format2 which 
5857         constructs a BadImageFormatException using the ctor taking a custom
5858         message and the file name. Passing in a NULL msg results in a default
5859         message.
5860         * exception.h: define mono_get_exception_bad_image_format2 function.
5861         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
5862         when file name pointed to an invalid IL image. Use 
5863         mono_get_exception_file_not_found2 to construct FileNotFoundException,
5864         as this results in a more meaningful error message.
5865
5866 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
5867
5868         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
5869         #79465.
5870
5871 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
5872
5873         * metadata.c (mono_type_size): Change the align parameter to guint32 for
5874         consistency with the other _size functions.
5875         (mono_type_stack_size): Ditto.
5876
5877         * class.c object.c icall.c: Fix warnings caused by the above change.
5878
5879         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
5880
5881         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
5882
5883         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
5884
5885 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
5886
5887         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
5888         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
5889         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
5890         threadpool.h, threads-types.h: mark more internal functions.
5891
5892 2006-10-11  Dick Porter  <dick@ximian.com>
5893
5894         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
5895         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
5896         reproduce the bug even before applying the fix.)
5897
5898 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
5899
5900         * reflection.c: allow retrieving attributes for arguments in generic
5901         methods (bug #79241).
5902
5903 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
5904
5905         * debug-mono-symfile.c: properly check fopen () result (found by
5906         coverity).
5907
5908 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
5909
5910         * reflection.c: make error message clearer and fixed two
5911         issuelets found by Coverity.
5912
5913 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
5916
5917 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
5918
5919         * object-internals.h, gc-internal.h, profiler-private.h:
5920         mark internal functions.
5921
5922 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
5923
5924         * reflection.c: put data in the text section.
5925         * icall.c: recognize more types in type_from_typename ().
5926         * process.c, marshal.c: added some GC FIXMEs.
5927
5928 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
5929
5930         * loader.c: check for NULL before initializing.
5931
5932 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
5933
5934         * gc.c (finalizer_thread): Use a non-alertable wait here.
5935
5936         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
5937         until the correct solution is found.
5938
5939 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
5940
5941         * reflection.c (mono_module_get_object): Avoid an assert when operating on
5942         modules with no metadata. Fixes #79596.
5943
5944         * image.c (load_metadata_ptrs): Put back the error message when
5945         the #- heap is encountered since the support is not complete yet.
5946
5947 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
5948
5949         * gc.c: do not allow the user to SuppressFinalize () a
5950         delegate because it would leak the trampoline if present.
5951
5952 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
5955         PropertyPtr table.
5956
5957 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
5958
5959         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
5960
5961         * metadata.c (mono_metadata_get_param_attrs): Ditto.
5962
5963         * row-indexes.h: Add definitions for *Ptr tables.
5964
5965         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
5966
5967         * metadata.c (mono_metadata_translate_token_index): New helper function to
5968         translate table indexes used in uncompressed metadata.
5969         (mono_metadata_decode_table_row): Ditto.
5970         (mono_metadata_decode_table_row_col): Ditto.
5971
5972         * metadata.c: Add table schema for *Ptr tables.
5973
5974         * class.c loader.c: Use the new helper function to access the affected metadata
5975         tables.
5976         
5977         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
5978         #38532.
5979         
5980 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
5981
5982         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
5983         sequences which can be unbounded in size. Fixes #79583.
5984
5985 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
5986
5987         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
5988         static initialization.
5989
5990         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
5991
5992         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
5993
5994         * domain.c (mono_domain_free): Free up type_init_exception_hash.
5995
5996         * object.c (mono_runtime_class_init): Implement correct semantics when a static
5997         ctor fails, i.e. throw the same exception on subsequent accesses.
5998         
5999 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
6000
6001         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
6002         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
6003         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
6004         Handle marshalling of interfaces and VARIANTs contained in structs.
6005         
6006         Code is contributed under MIT/X11 license.
6007         
6008 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
6011         
6012         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
6013         mempool.
6014
6015 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6016
6017         * console-io.c: ignore previous SIGINT handler.
6018
6019 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
6022         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
6023         #79460, #79461, #79485.
6024
6025         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
6026
6027         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
6028         #79217.
6029
6030 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
6031
6032         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
6033         could be generated from it.
6034
6035 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
6036
6037         * rand.c: fix read loop to correctly handle EINTR.
6038
6039 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6040
6041         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
6042         internal calls are defined to keep methods closer to the declaring
6043         type and allow a significant reduction in runtime relocations and
6044         memory usage.
6045
6046 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
6047
6048         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
6049         exception message to have FileNotFoundException use the default
6050         assembly load error message. Fixes bug #79426.
6051         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
6052
6053 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6054
6055         * threadpool.c: (start_thread_or_queue) use the root domain when
6056         creating the thread instead of the async object one.
6057
6058 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
6059
6060         * class.c, object.c, class-internals.h, reflection.c:
6061         for arrays, store element_size inside MonoClass (speedup
6062         for array object creation).
6063
6064 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
6065
6066         * icall.c: fixed CodeBase to use the file name and not the module
6067         name (bug #79365).
6068
6069 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
6070
6071         * mono-debug.c, mono-debug.h: export find_method as
6072         mono_debug_find_method ().
6073
6074 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
6075
6076         * debug-helpers.c, class-internals.h: added a few functions useful
6077         when debugging under gdb.
6078
6079 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6080
6081         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
6082         characters that need special handling.
6083
6084 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
6085
6086         * mono-config.c: make the os/cpu specification more flexible,
6087         allowing lists and negation.
6088
6089 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
6090
6091         * marshal.c: COM Interop fixes. Handle case where method->klass.
6092         is interface. Handle BSTR/MonoString when null. Use CDECL as 
6093         calling convention on non-windows platforms. This is for
6094         compatibility with XPCOM and MainWin COM.
6095         
6096         Code is contributed under MIT/X11 license.
6097         
6098
6099 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
6100
6101         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
6102         correctly. Fixes #79217.
6103
6104         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
6105
6106 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
6107
6108         * mono-config.c: allow both an os and cpu attribute for dllmap
6109         and dllentry elemnets to enable a single config file to be used
6110         for multiple architectures.
6111
6112 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
6113
6114         * loader.c: MonoLoaderError was cleared too soon on load failure.
6115         Fixes bug #79424.
6116
6117 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
6118
6119         * icall.c: use the defining class vtable when accessing a
6120         static field, not a pobblibly derived class.
6121
6122 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * icall.c string-icalls.c: Remove references to unicode.h.
6125
6126         * unicode.h unicode.c Makefile.am: Remove these unused source files.
6127
6128         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
6129
6130         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
6131         indicating the image where custom marshaller types should be looked up.
6132         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
6133         custom marshallers, instead of corlib. Fixes #79425.
6134
6135 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
6136
6137         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
6138
6139 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
6140
6141         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
6142         Implement Environment.ProcessorCount.
6143         
6144         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
6145         Implement Environment.ProcessorCount.
6146         
6147         * icall.c: 
6148         Add Environment.ProcessorCount icall.
6149         
6150         Patch by Jason McFall.
6151
6152 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6153
6154         * assembly.c: don't append .exe/.dll when the filename already contains
6155         one of those extensions.
6156
6157 2006-09-12  Martin Baulig  <martin@ximian.com>
6158
6159         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
6160         to array interfaces.
6161
6162 2006-09-11  Martin Baulig  <martin@ximian.com>
6163
6164         * reflection.c (mono_image_build_metadata): Create the
6165         MethodImpl's after emitting all types and methods, so we don't
6166         need another fixup pass for them.
6167
6168 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * class.c (mono_class_from_name_case): Fix regression introduced by the last
6171         change.
6172
6173 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
6174
6175         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
6176         unload.
6177
6178 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
6179
6180         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
6181         args is not set. Fixes #78926.
6182
6183 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
6186
6187         * image.c (load_class_names): Move this to class.c, and rename it to 
6188         'mono_image_init_name_cache'.
6189         (load_modules): Fix a warning.
6190
6191         * class.c icall.c image.c: Initialize image->name_cache lazily.
6192
6193         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
6194         on its name using information in the AOT file.
6195
6196         * class.c (mono_class_from_name): Use the new hook function.
6197
6198 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
6199
6200         * reflection.c (mono_param_get_objects): Handle enum default parameter values
6201         correctly.
6202
6203         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
6204         Fixes #79289.
6205         
6206 2006-09-06  Martin Baulig  <martin@ximian.com>
6207
6208         * icall.c (mono_lookup_internal_call): Small fix.
6209
6210 2006-09-05  Raja R Harinath  <rharinath@novell.com>
6211
6212         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
6213         double g_free.
6214
6215 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
6216
6217         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
6218         when --debug is specified.
6219
6220 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * class.c (setup_generic_array_ifaces): Fix a warning.
6223
6224 2006-09-04  Miguel de Icaza  <miguel@novell.com>
6225
6226         * Temporarily remove the patch to assemly.c that checks the
6227         assembly versions as it breaks our gacutil.
6228
6229 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
6230
6231         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
6232
6233         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
6234         a net 1.0 runtime.
6235
6236         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
6237         created using the default ctor. Fixes #79152.
6238         (mono_string_builder_to_utf16): Ditto.
6239
6240 2006-09-01  Martin Baulig  <martin@ximian.com>
6241
6242         Fix handling of the generic array interfaces.
6243
6244         * class-internals.h
6245         (MonoDefaults): Removed `generic_array_class' and added
6246         `generic_ilist' class.
6247
6248         * class.c
6249         (mono_bounded_array_class_get): Add the new generic array interfaces.
6250         (setup_generic_array_ifaces): New static method; create vtable
6251         entries for each method in the generic array interfaces.
6252
6253         * metadata.c
6254         (select_container): Allow "parent-less" generic methods.
6255
6256         * marshal.c
6257         (mono_marshal_get_generic_array_helper): New public method.
6258
6259         * icall.c
6260         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
6261         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
6262         moved the interncall into System.Array.
6263
6264 2006-09-01  Raja R Harinath  <rharinath@novell.com>
6265
6266         A few more cases of avoiding work on types with ->byref set.
6267         Has the real fix for #79238
6268         * icall.c (is_generic_parameter): New helper.
6269         (ves_icall_Type_GetGenericParameterPosition): Use it.
6270         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
6271         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
6272         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
6273         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
6274         reference types.
6275         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
6276         reference types.
6277         (ves_icall_Type_get_IsGenericInstance): Likewise.
6278         (ves_icall_Type_get_IsGenericType): Likewise.
6279
6280 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
6281
6282         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
6283         class if possible.
6284
6285         * mempool.h (mono_mempool_get_allocated): New helper function.
6286
6287         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
6288         change.
6289
6290         * mempool.c: Fix warnings and the calculation of stats.
6291
6292         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
6293
6294         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
6295
6296         * loader.c (mono_get_method_from_token): Update method_count stat.
6297
6298         * class-internals.h (MonoStats): Add some stats.
6299
6300 2006-08-31 Robert Jordan  <robertj@gmx.net>
6301
6302         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
6303         with managed variants.
6304         All code is contributed under the MIT/X11 license.
6305         
6306 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
6307
6308         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
6309         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
6310
6311         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
6312
6313         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
6314         with cycles in classes.
6315
6316         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
6317
6318         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
6319         missing a [MarshalAs] directive. Fixes #79203.
6320
6321         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
6322         klass->marshal_info. Fixes #79217.
6323
6324 2006-08-30  Martin Baulig  <martin@ximian.com>
6325
6326         Committing a patch from Joachim Ante <joe@otee.dk>:
6327         Add support for binary data symbol stores.
6328
6329         * debug-mono-symfile.c
6330         (mono_debug_open_mono_symbol_file): Renamed into
6331         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
6332         arguments.
6333
6334         * mono-debug.c
6335         (mono_debug_open_image): Added `raw_contents' and `size' args.
6336         (mono_debug_init_2_memory): New public function.
6337
6338 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
6339
6340         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
6341
6342 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6343
6344         * appdomain.c: implement support for ShadowCopyFiles.
6345
6346 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
6347
6348         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
6349         when value is NULL (and should remove CID #51).
6350
6351 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6352
6353         * image.c: moved 2 functions to ../utils.
6354
6355 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
6356
6357         * gc.c: cope with the target object of a GC handle being NULL
6358         (bug #78877).
6359
6360 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
6361
6362         * class.c: recursively check parent's explicit implementations
6363         of interface methods (fixes bug #79125).
6364
6365 2006-08-19  Miguel de Icaza  <miguel@novell.com>
6366
6367         * filewatcher.c: Avoid warnings when building, do not redefine
6368         constants that are defined.
6369
6370         Remove warnings.
6371
6372 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6373
6374         * image.c: don't fail when the link points to an absolute path.
6375
6376 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
6377
6378         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
6379         Fix CID #3.
6380
6381 2006-08-17  Miguel de Icaza  <miguel@novell.com>
6382
6383         * image.c (full_path): A new method used to obtain the actual path
6384         of an assembly even in the presence of symbolic links.  
6385
6386         This is necessary for the case where we are running a binary that
6387         has been GACed, but we are using the "published" path name
6388         ($prefix/mono/1.0/blah.exe) which happens to point to the real
6389         file in the GAC.
6390
6391         This was the source of the failure for the `xsp' command with the
6392         recent AppDomain changes, as far as the runtime was concerned,
6393         there were two different assemblies: $prefix/mono/1.0/blah.exe and
6394         $prefix/mono/gac/blah/version/blah.exe.
6395
6396         (do_mono_image_open): use full path
6397
6398 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
6399
6400         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
6401
6402 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
6403
6404         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
6405         domain_id is supplied. Fix CID #241 and corlib's unit tests.
6406
6407 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
6408
6409         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
6410         small structures. Fixes #78990.
6411
6412 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
6415
6416         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
6417
6418 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6419
6420         * appdomain.c:
6421         * marshal.c: don't load all the assemblies from a domain into newly
6422         created ones. The new domains might have different rules and load
6423         assemblies from different locations. Fixes bug #76757.
6424
6425         Patch by Lluis. Conflicts resolved by Brian Crowell.
6426
6427 2006-08-16  Alp Toker  <alp@atoker.com>
6428
6429         * socket-io.c: First half of the fix for #79084.
6430         Set sa_size to the length of the content, not that of the struct.
6431         Don't add NULL suffix to the content, this should be done in
6432         managed code if needed.
6433
6434 2006-08-14  Raja R Harinath  <rharinath@novell.com>
6435
6436         Fix part of #79012
6437         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
6438         mono_metadata_parse_type returns NULL.
6439
6440 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
6441
6442         * normalization-tables.h : new file for string normalization data.
6443         * locales.c, locales.h, icall.c :
6444           added load_normalization_resource() for string normalization,
6445           and icall as well.
6446         * Makefile.am : added normalization-tables.h to the sources.
6447
6448 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
6449
6450         * marshal.c: Add more helper functions to reduce code duplication and use them
6451         everywhere.
6452
6453 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
6454
6455         * marshal.c: Fix non-x86 stdcall warnings.
6456         
6457         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
6458         them everywhere.
6459
6460 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
6461
6462         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
6463         type check on multi-dimensional arrays. Fixes #79000.
6464
6465 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
6466
6467         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
6468         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
6469         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
6470         * class-internals.h: add is_com_object to class structure.
6471         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
6472         null checks to COM object marshalling. Fix .ctor call on RCW.
6473         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
6474         
6475         All code is contributed under the MIT/X11 license.
6476
6477 2006-08-09  Dick Porter  <dick@ximian.com>
6478
6479         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
6480         racing mono_monitor_allocator_lock() somewhere, so don't delete
6481         the critical section for now.  Found by running and exiting
6482         monodevelop.
6483
6484 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
6487         (ves_icall_System_ComObject_FindInterface): Ditto.
6488         (ves_icall_System_ComObject_CacheInterface): Ditto.
6489
6490         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
6491         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
6492
6493 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6494
6495         * threadpool.c: treat pipes from process asynchronous reads as sockets
6496         when reading from them, so we get select/poll or epoll to wait for
6497         data.
6498
6499 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
6500
6501         * loader.c: Fix a typo (CID #233) in the null check.
6502
6503 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
6504
6505         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
6506         Hopefully fixes #78949.
6507         
6508         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
6509         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
6510         bytes. Fixes #78972.
6511
6512 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6513
6514         * filewatcher.c: we need to set errno here.
6515
6516 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6517
6518         * filewatcher.c: let Win32Exception get the error value.
6519
6520 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6521
6522         * filewatcher.c: translate errno into win32 errors for Win32Exception
6523         to know what happened.
6524
6525 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * threadpool.c: Fix more warnings.
6528
6529         * assembly.c (search_loaded): Fix warnings.
6530
6531         * threadpool.c (mono_thread_pool_finish): Fix warnings.
6532         (mono_async_invoke): Ditto.
6533
6534 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
6535
6536         * object.c (mono_remote_class_vtable): Need to create proxy vtable
6537         entries for __ComObject type in addition to ComImport types.
6538         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
6539         about hash table.
6540         
6541         All code is contributed under the MIT/X11 license.
6542
6543 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
6544
6545         * image.c: avoid tentative loading of modulerefs that contain
6546         no metadata (P/Invoke library names).
6547
6548 2006-07-28  Dick Porter  <dick@ximian.com>
6549
6550         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
6551         mono_loader_lock() somewhere, so don't delete the critical section
6552         for now.  Found by running and exiting monodevelop.
6553
6554 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6555
6556         * filewatcher.c: define the inotify syscalls when we're building on
6557         linux and have sys/syscall.h. The build system might not have support
6558         for inotify but the target system might have it.
6559
6560 2006-07-26  Miguel de Icaza  <miguel@novell.com>
6561
6562         * domain.c: Documentation updates.
6563
6564         * loader.c (mono_free_method): Do not release the method
6565         information if we are being profiled, as profilers will use this
6566         information at shut down to present some data to the user.
6567
6568         This is needed so that the profiler does not crash, as the
6569         profiler tends to keep MonoMethods around, and they might become
6570         invalid if we free these.
6571
6572         (mono_get_method_constrained): Return the original CIL stream
6573         method as well, so verification can be performed against it.
6574
6575 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6576
6577         * filewatcher.[ch]: support for inotify file system watcher.
6578         * icall.c: add new internal calls for the inotify file system watcher.
6579
6580 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6581
6582         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
6583         #78888.
6584
6585 2006-07-20  Dick Porter  <dick@ximian.com>
6586
6587         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
6588         warning.
6589
6590 2006-07-20  Dick Porter  <dick@ximian.com>
6591
6592         * threads.c (start_wrapper): Do the thread cleanup while we still
6593         hold a reference to its object.  Fixes bug 78123.
6594
6595 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
6596
6597         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
6598         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
6599           "managed-to-managed".
6600         * icall.c: Redirect string constructors that take sbyte* to
6601           ves_icall_System_String_ctor_RedirectToCreateString.
6602         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
6603           to CreateString () methods with matching signature.
6604         * reflection.c: Use original security informations for
6605           MONO_WRAPPER_MANAGED_TO_MANAGED.
6606         * security-manager.c: Use original security informations for
6607           MONO_WRAPPER_MANAGED_TO_MANAGED.
6608         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
6609           that is a placeholder and only its address should be used.
6610         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
6611           that is a placeholder and only its address should be used.
6612
6613 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
6614
6615         Begin implementing COM Interop.
6616         * appdomain.c: Increment corlib version.
6617         * class.c: Set ComImport classes' parent to __ComObject.
6618         * loader.c: Mark cominterop methods as such.
6619         * domain.c: Add __ComObject class to MonoDefaults structure.
6620         * image.c: Add 2 hashtables to the image for COM Interop related methods
6621         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
6622         using the mempool allocator
6623         
6624         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
6625         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
6626         declaration for mono_metadata_type_dup_mp.
6627         
6628         * debug-helpers.c: Added strings for two additional wrapper types
6629         * object.c: Create proxy objects for ComImport classes
6630         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
6631         and added __ComObject class to MonoDefaults structure.
6632         
6633         * object-internals.h: Finish MonoRealProxy definition, and add definition of
6634         MonoComInteropProxy and MonoComObject.
6635         
6636         * marshal.c: Added support for COM Interop
6637         (signature_cominterop): Converts managed signature to corresponding
6638         unmanaged COM signature.
6639         (cominterop_get_function_pointer): gets unmanaged function pointer via
6640         COM object vtable
6641         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
6642         (cominterop_get_method_interface): returns interface type that method is defined on
6643         (mono_mb_emit_cominterop_call): emits native call to function pointer
6644         gotten from vtable
6645         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
6646         that matches signature of unmanaged function.
6647         (cominterop_get_native_wrapper): wrapper around adjusted method call.
6648         (cominterop_get_invoke): forwards call from proxy to __ComObject
6649         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
6650         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
6651         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
6652         
6653         * marshal.h: Added Marshal icall declarations.
6654         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
6655         so we can access them in finalizer
6656         
6657 2006-07-14  Dick Porter  <dick@ximian.com>
6658
6659         * object.c (mono_type_initialization_cleanup): Fix a race
6660         condition by temporarily commenting out the critical section
6661         deletion.
6662
6663 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
6664
6665         * reflection.c (create_custom_attr): Fix some warnings.
6666         (create_custom_attr_data): Ditto.
6667         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
6668         types. Fixes #78855.
6669
6670 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
6671
6672         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
6673
6674         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
6675
6676 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
6677
6678         * reflection.c (resolve_object): Add support for DynamicMethod.
6679
6680         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
6681         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
6682
6683 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
6684
6685         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
6686         don't leak GPtrArray's pdata has we have no use (nor free) for it.
6687
6688 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
6691         Fixes #77888.
6692
6693 2006-06-30  Raja R Harinath  <rharinath@novell.com>
6694
6695         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
6696         slightly: remove a shadow local variable.
6697
6698 2006-06-29  Raja R Harinath  <rharinath@novell.com>
6699
6700         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
6701         definition that introduces the virtual function slot.
6702         Also fix Coverity #105.
6703
6704 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
6705
6706         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
6707         for dynamic assemblies. Fixes #78724.
6708
6709 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
6710
6711         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
6712         Fixes #78722.
6713
6714 2006-06-21  Martin Baulig  <martin@ximian.com>
6715
6716         * reflection.c
6717         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
6718         fixes #76484.
6719
6720 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
6721
6722         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
6723
6724 2006-06-20  Raja R Harinath  <rharinath@novell.com>
6725
6726         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
6727         nor TYPEREFs.
6728         * class.c (mono_class_create_from_typespec): Add 'context' argument.
6729         Inflate result if necessary.
6730         (mono_class_get_full): Remove old version.  Rename from
6731         'mono_class_get' and add 'context' argument.  Pass it to
6732         ..._create_from_typespec.
6733         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
6734         (mono_ldtoken): Revert change below.
6735
6736 2006-06-20  Martin Baulig  <martin@ximian.com>
6737
6738         * class.c (mono_ldtoken): Don't pass the generic context to
6739         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
6740
6741 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
6742
6743         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
6744         and later freeing it. Fixes #78638.
6745
6746 2006-06-15  Miguel de Icaza  <miguel@novell.com>
6747
6748         * icall.c (mono_class_get_throw): Revert over-zealous error
6749         throwing, the caller for mono_class_get_throw will cope with
6750         errors when classes are not properly initialized already.
6751
6752         The code still copes with loader exceptions though.
6753
6754         Fixes the regression in reftype1 and reftype3 from the CAS tests.
6755         
6756 2006-06-14  Miguel de Icaza  <miguel@novell.com>
6757
6758         Fixes the `make run1' version of RuntimeAbort (to be commited,
6759         source is in Bugzilla).
6760         
6761         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
6762         FALSE on class loading failure instead of returning true.
6763
6764         * class.c (mono_class_create_from_typedef): It is possible for
6765         mono_metadata_interfaces_from_typedef_full to fail if a class is
6766         not found, cope with this.
6767         
6768
6769 2006-06-14  Dick Porter  <dick@ximian.com>
6770
6771         * socket-io.c: 
6772         * process.c: Fix a bunch of signed/unsigned warnings from gcc
6773         4.1.1
6774
6775 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
6776
6777         * culture-info-table.h : oops, forgot to make it nsync with r61548.
6778
6779 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
6780
6781         * icall.c: Another fix for building mono in Visual Studio.
6782
6783 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
6784
6785         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
6786         
6787 2006-06-09  Martin Baulig  <martin@ximian.com>
6788
6789         * debug-mono-symfile.c: Put this back and really fix it this
6790         time. Sorry for all the trouble.
6791
6792 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
6793
6794         * icall.c (mono_class_get_throw): Fix a warning.
6795         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
6796         ReflectionTypeLoadException if needed. Fixes #78606.
6797
6798         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
6799         (mono_class_init): Ditto.
6800
6801         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
6802         ref_only exceptions.
6803         (mono_loader_clear_error): Make this work even if there is no error.
6804
6805 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
6806
6807         * object-internals.h marshal.c marshal.h icall.c: Implement method 
6808         Marshal.GetComSlotForMethodInfo using internal call.
6809
6810 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
6811
6812         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
6813         a function for signalling it.
6814
6815         * class.c (mono_class_from_typeref): Use the new kind of loader error when
6816         a referenced assembly is not found.
6817
6818         * loader.c (mono_loader_error_prepare_exception): Add support for 
6819         LOADER_ERROR_ASSEMBLY. Fix formatting.
6820
6821 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
6822
6823         * domain.c appdomain.c class-internals.h marshal.c: Add support 
6824         for VARIANT marshalling on windows and increment corlib version
6825         since Variant struct was added.
6826
6827 2006-06-03  Miguel de Icaza  <miguel@novell.com>
6828
6829         * debug-mono-symfile.c: Revert Martin's previous patch which broke
6830         stack trace line information:
6831
6832         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
6833         (Martin) when looking up B which is between A and C, return A not C.
6834
6835         Bug is #78573.
6836
6837         Thanks to Alexander Olk for tracking this down.
6838
6839 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
6840
6841         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
6842         
6843         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
6844         avoid clobbering its value.
6845         (mono_string_to_lpstr): Fix a warning on windows.
6846
6847 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
6848
6849         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
6850
6851         * reflection.c loader.c: Removed references to 'dummy' flag.
6852
6853         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
6854
6855         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
6856         it gets GC tracking.
6857
6858         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
6859         GC tracking.
6860         
6861         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
6862
6863         * marshal.c threadpool.c: Update callers of mono_async_result_new.
6864
6865         * appdomain.c: Bump corlib version.
6866
6867 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
6870         CEE_STIND_REF when working with object references.
6871
6872 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
6875         Fixes #78539.
6876
6877 2006-05-30  Miguel de Icaza  <miguel@novell.com>
6878
6879         * loader.c (method_from_memberref): Fix argument value for
6880         mono_loader_set_error_method_load (I was passing the MonoClass
6881         instead of the class name char *).
6882
6883 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
6884
6885         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
6886         CEE_STIND_REF when working with object references.
6887
6888 2006-05-30  Martin Baulig  <martin@ximian.com>
6889
6890         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
6891         mono_method_full_name() change and replace the ':' with a '.'
6892         here.
6893
6894 2006-05-30  Martin Baulig  <martin@ximian.com>
6895
6896         * debug-mono-symfile.c
6897         (mono_debug_symfile_lookup_location): Fix the algorithm:
6898         when looking up B which is between A and C, return A not C.
6899
6900 2006-05-29  Martin Baulig  <martin@ximian.com>
6901
6902         * mono-debug.h
6903         (MonoDebugMethodInfo): Make the typedef public.
6904         (MonoDebugSourceLocation): New public struct.
6905
6906         * mono-debug.c
6907         (mono_debug_source_location_from_address): Removed.
6908         (mono_debug_source_location_from_il_offset): Removed.
6909         (mono_debug_il_offset_from_address): Removed.
6910         (mono_debug_address_from_il_offset): Removed.
6911         (mono_debug_lookup_method): New public function.
6912         (mono_debug_lookup_source_location): New public function; replaces
6913         the old mono_debug_source_location_from_*() functions; see the
6914         inline documentation.
6915         (mono_debug_free_source_location): New public function.
6916         (mono_debug_print_stack_frame): New public function; see the
6917         inline documentation.
6918
6919         * debug-mono-symfile.c
6920         (mono_debug_find_source_location): Renamed into
6921         mono_debug_symfile_lookup_location(); only take a
6922         `MonoDebugMethodInfo *' and an `offset' argument; added inline
6923         documentation.
6924         (mono_debug_find_method): Renamed into
6925         mono_debug_symfile_lookup_method().
6926
6927 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
6928
6929         * assembly.c (mono_assembly_open_full): Dont overwrite the status
6930         returned by mono_image_open_full ().
6931
6932         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
6933         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
6934         #78517.
6935
6936         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
6937         #78518.
6938
6939 2006-05-27  Miguel de Icaza  <miguel@novell.com>
6940
6941         * class.c (mono_class_from_typeref): handle missing images
6942         earlier, deals with bug #78418.   Refactor code; 
6943
6944         Fix a warning introduced in my previous commit (some stale code
6945         from before I revisited my patch).
6946
6947         * class.c (mono_class_create_from_typedef): On failure, remove the
6948         class from the MonoImage->class_cache as the class is not
6949         initialized;   Fixes the leak pointed out by Paolo.
6950
6951 2006-05-25  Dick Porter  <dick@ximian.com>
6952
6953         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
6954         DeleteCriticalSections until I figure out which one may still be
6955         sometimes locked when mono_thread_cleanup is called.
6956
6957 2006-05-24  Dick Porter  <dick@ximian.com>
6958
6959         * threads.c (mono_thread_cleanup): Move the threading cleanup out
6960         of mono_thread_manage and back into its own function, so it can be
6961         called after the finalizer thread has finished.
6962
6963         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
6964
6965 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
6966
6967         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
6968         Fixes #78495.
6969
6970         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
6971         with non-blittable elements.
6972         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
6973
6974 2006-05-24  Martin Baulig  <martin@ximian.com>
6975
6976         * mono-debug-debugger.h (MonoDebuggerEvent): Added
6977         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
6978
6979         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
6980         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
6981         `mono_debugger_event_handler' to NULL.
6982
6983 2006-05-24  Martin Baulig  <martin@ximian.com>
6984
6985         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
6986
6987 2006-05-24  Martin Baulig  <martin@ximian.com>
6988
6989         * mono-debug-debugger.h
6990         (mono_debugger_create_notification_function): Added
6991         `MonoCodeManager *' argument.
6992
6993 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
6994
6995         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
6996
6997 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
6998
6999         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
7000         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
7001         implementation.
7002
7003 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
7004
7005         * icall.c: precise GC support: objects can't be stored in unmanaged
7006         memory anymore, even if they are kept alive by other references: since
7007         they can move the GC needs to be able to always find them.
7008
7009 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
7010
7011         * object.c: precise GC support for static fields. Support
7012         for moving GCs: write barriers and pinned allocation for interned
7013         strings.
7014
7015 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
7016
7017         * domain.c, domain-internals.h: precise GC support for the MonoDomain
7018         structure.
7019
7020 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
7021
7022         * class.c, gc.c: sgen and precise GC updates.
7023
7024 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
7025
7026         * marshal.h, marshal.c: added write barrier wrapper and precise type
7027         fixes.
7028
7029 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
7030
7031         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
7032         support.
7033
7034 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
7035
7036         * reflection.c: precise and sgen GC updates.
7037
7038 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
7039
7040         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
7041
7042 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
7045
7046 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
7047
7048         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
7049         MONO_TYPE_OBJECT. Fixes #78462.
7050
7051 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
7052
7053         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
7054         and blittable types.
7055
7056 2006-05-17  Miguel de Icaza  <miguel@novell.com>
7057
7058         * class.c (mono_class_get_exception_for_failure): Implement parts
7059         of a TODO: if the loader error is set (instead of the class
7060         error), we return a Loader exception that can be properly thrown
7061         elsewhere.
7062
7063         This was exposed by some Winforms 2.0 code that I tried to run
7064         (Atsushi pointed me to it).
7065
7066 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
7067
7068         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
7069         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
7070         
7071         * marshal.c (emit_marshal_vtype): Add limited support for 
7072         UnmanagedType.LPStruct. Fixes #78427.
7073
7074         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
7075         Applied a patch from kangaroo to fix #77523.
7076
7077 2006-05-17  Martin Baulig  <martin@ximian.com>
7078
7079         * threads.c
7080         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
7081         (debugger_thread_created): Removed.
7082         (debugger_thread_exited): Removed.
7083
7084 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
7085
7086         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7087
7088         * object-internals.h (MonoReflectionResource): Sync with managed version.
7089
7090 2006-05-12  Wade Berrier <wberrier@novell.com>
7091
7092         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
7093
7094 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
7095
7096         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
7097         functions try to allocate from the image mempool.
7098
7099 2006-05-12  Dick Porter  <dick@ximian.com>
7100
7101         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
7102
7103 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
7104
7105         * object.c: The FieldGetter and FieldSetter methods require the full
7106         name of the class, not only the name. Fixes bug #78277.
7107
7108 2006-05-11  Miguel de Icaza  <miguel@novell.com>
7109
7110         * loader.c (method_from_memberref): Do not pass the NULL klass to
7111         mono_loader_set_error_() methods.  Pass the non-NULL value
7112         (class). 
7113
7114 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
7115
7116         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
7117         (mono_assembly_close): Null out assembly->image->references after freeing it.
7118
7119         * image.c (mono_image_close): Free image->references.
7120         
7121         * reflection.c (mono_image_basic_init): Fix a small memory leak.
7122
7123 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
7124
7125         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
7126         before checking if it's NULL (g_assert).
7127
7128 2006-05-10  Martin Baulig  <martin@ximian.com>
7129
7130         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
7131         I thought I already killed that two months ago, but now it somehow reappeared.
7132
7133 2006-05-10  Martin Baulig  <martin@ximian.com>
7134
7135         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
7136
7137 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
7138
7139         * reflection.c: Allocate memory for dynamically created methods in the image
7140         mempools.
7141
7142 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
7143
7144         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
7145         don't use the ad pointer before checking if it's NULL (g_assert).
7146
7147 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
7148
7149         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
7150         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
7151
7152         * marshal.c: Allocate all signatures from mempools.
7153
7154         * marshal.c: Allocate some more signatures from mempools.
7155
7156 2006-05-09  Miguel de Icaza  <miguel@novell.com>
7157
7158         * object.c (mono_load_remote_field): The code used to provide a
7159         temporary variable for returning results if the user did not
7160         provide a result pointer.  But our temporary variable was allocted
7161         on the satck.
7162
7163         Fix calling code to always pass a result area.   Coverity ID 103.
7164
7165 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
7166
7167         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
7168         value, not the old. Fixes #78312.
7169         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
7170
7171         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
7172         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
7173         per-image cache.
7174
7175         * assembly.c (mono_assembly_close): Free image->references.
7176
7177         * assembly.c (mono_assembly_names_equal): Fix a warning.
7178         (mono_assemblies_cleanup): Cleanup more global data.
7179
7180         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
7181
7182         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
7183         ptr_cache and image->modules.
7184
7185         * image.c (mono_image_init): Allocate array_cache lazily.
7186         
7187 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7188
7189         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
7190         behavior was changed recently and has bad side effects.
7191
7192 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
7195         
7196         * assembly.c (mono_assembly_close): Remove a debug printf.
7197
7198         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
7199
7200         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
7201         to also allow for temporary references between mono_image_open ()/close ().
7202
7203         * domain.c (get_runtimes_from_exe): Add a FIXME.        
7204
7205 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
7206
7207         * marshal.c: Fix support for dynamic methods.
7208
7209         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
7210
7211         * marshal.c (mono_marshal_cleanup): New cleanup function.
7212
7213         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
7214         image mempools.
7215
7216         * class.c (mono_class_init): Fix leaking class->nested_classes.
7217
7218         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
7219
7220         * image.c (mono_image_init): Initialize the new cashes.
7221
7222         * image.c (mono_image_close): Destroy the new cashes.
7223
7224         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
7225
7226         * mempool.c (mono_mempool_strdup): New helper function.
7227
7228         * class-internals.h: Add prototype for mono_loader_unlock ().
7229
7230         * domain.c (mono_jit_info_table_find): Fix a warning.
7231         (mono_debugger_check_runtime_version): Ditto.
7232
7233         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
7234         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
7235         functions to these modules.
7236
7237         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
7238         metadata modules.
7239         
7240         * marshal.c (mono_free_bstr): Fix a warning.
7241
7242         * assembly.c (mono_assembly_open_full): Fix another small leak.
7243
7244         * object.c: Fix some unload leaks in the remoting code.
7245
7246         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
7247         function.
7248
7249         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
7250
7251         * reflection.c: Fix some unload leaks in dynamic assemblies.
7252
7253 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
7254
7255         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
7256         * marshal.h: Add BSTR support on Win32
7257         * icall.c: Add BSTR icalls
7258         * metadata.h: Add BSTR enums
7259
7260 2006-04-28  Miguel de Icaza  <miguel@novell.com>
7261
7262         Work to catch the crash from #76795 and turn it into an
7263         exception.   As I stubbed out pieces of the VisualBasic support,
7264         I found a number of places where the code was failing and I added
7265         checks to those places. 
7266         
7267         * metadata.c (do_mono_metadata_parse_generic_class): Make this
7268         function return a status code.  If we fail to parse the signature
7269         from mono_metadata_parse_generic_inst, return FALSE.
7270
7271         * loader.c (mono_get_method_from_token): If we fail to load the
7272         method (mono_class_get) return NULL.   
7273
7274         * (method_from_memberref): Return NULL if we are unable to parse
7275         the method signature
7276
7277         (mono_loader_error_prepare_exception): Since we now use the
7278         loader_error flag internally to stop processing, and obtaining
7279         exceptions that might be thrown will walk this code path the
7280         proper way of going from a MonoLoaderError into a
7281         MonoException was convoluted.   This new routine encapsulates the
7282         process of turning the error into an exception and *clearing* the
7283         error afterwards.
7284         
7285 2006-04-27  Miguel de Icaza  <miguel@novell.com>
7286
7287         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
7288         with missing assemblies), and to cope with:
7289
7290                 * Missing fieldref from a non-existing assembly.
7291                 * Missing methodref from a non-existing assembly.
7292
7293         The first batch of work to address *some* of the issues from 76661.
7294         
7295         * object.c (mono_class_create_runtime_vtable): If we fail to
7296         initialize the class raise the exception here. 
7297
7298         * metadata.c (mono_class_get_overrides_full): If any methods fail
7299         to load return the failure to the caller.
7300
7301         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
7302         flagging assemblies that failed to load.   
7303
7304         Do not crash if we are unable to load the assembly.
7305
7306         (mono_assembly_close): Do nothing with REFERENCE_MISSING
7307         assemblies. 
7308
7309         * loader.c (mono_loader_set_error_type_load): Change the
7310         convention to always pass unallocated strings, so we make our own
7311         copies (I know our own code had duplicated strings before, but
7312         this keeps the normal conventions).
7313         (method_from_memberref): Call mono_loader_set_error_method_load
7314         for all possible failures of loading the class. 
7315         Remove assert, turn into a loader error.
7316
7317         (mono_loader_error_to_exception): Move this routine from mini
7318         (mini_loader_error_to_exception) there was no need to have that in
7319         mini. 
7320
7321         * class.c (mono_class_from_typeref): If we were not able to load
7322         the assembly with mono_assembly_load_reference, call the
7323         mono_loader_set_error_type_load to register the problem.
7324
7325         (mono_class_setup_fields): If we fail to load the type from
7326         mono_metadata_parse_type_full, call mono_class_set_failure and
7327         break from the loop.
7328
7329         If class->exception_type is set, we do not layout the fields as
7330         that might crash the runtime, and instead return (from breaking
7331         from the previous loop).
7332
7333         (mono_class_setup_vtable): This now returns a boolean indicating
7334         whether the table was properly setup.   The decision is driven by
7335         mono_class_get_overrides_full which might run into non-existing
7336         methods. 
7337         
7338         (mono_class_init): Returns TRUE on success or FALSE if there was a
7339         problem in loading the type (incorrect assemblies, missing
7340         assemblies, methods, etc).
7341
7342         When we call mono_class_setup_fields we also check for a potential
7343         error inside this call (either a class exception or a general
7344         loader exception).
7345
7346         (mono_class_create_from_typedef): If the parent fails to load
7347         (calling mono_class_get_full) return NULL.
7348         
7349         ** Important **
7350
7351         calls to mono_metadata_parse_type_full should be checked
7352         everywhere and set the mono_class_set_failure
7353         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
7354
7355         The current patch checks the places where my manually constructed
7356         tests show the errors are showing up, but we should do it
7357         everywhere. 
7358
7359         ** Important2 **
7360
7361         mono_class_init return values should be tested everywhere, like
7362         the previous case this is something that we should audit
7363         everywhere and not only on the cases exposed by the tests I
7364         created. 
7365
7366 2006-04-26  Miguel de Icaza  <miguel@novell.com>
7367
7368         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
7369         boolean parameter and instead pass the information on `options'
7370         parameter (FileOptions).
7371
7372         * icall.c: Register the new signature for MonoIO.Open.
7373
7374         * debug-helpers.c (dis_one): Trying to understand how coverity
7375         works.  Fix Run 5, item 78.
7376
7377 2006-04-26  Dick Porter  <dick@ximian.com>
7378
7379         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
7380         dereference.
7381
7382 2006-04-25  Martin Baulig  <martin@ximian.com>
7383
7384         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
7385
7386         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
7387         debugger_thread_created().
7388         (debugger_gc_push_all_stacks): Don't handle the main thread in any
7389         special way.
7390         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
7391         (mono_debugger_finalize_threads): New function; undo the effects
7392         of mono_debugger_init_threads().
7393         (mono_debugger_create_all_threads): Removed.
7394
7395 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
7396
7397         * image.c (mono_image_close): Tidy up trace messages.
7398
7399         * assembly.c (mono_assembly_close): Ditto.
7400
7401         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
7402         no longer references an already freed assembly. Fixes #78168.
7403
7404 2006-04-21  Dick Porter  <dick@ximian.com>
7405
7406         * threads.c (mono_thread_detach): Fix reference counting when
7407         detaching threads.
7408
7409 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
7410
7411         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
7412         #78155.
7413
7414 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
7415
7416         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
7417         (mono_type_to_stind): Ditto.
7418
7419         * marshal.c: Use the new helper functions to simplify code.
7420
7421         * image.c (mono_image_close): Add some code for help debug assembly unloading
7422         problems.
7423
7424         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
7425         image mempool.
7426
7427         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
7428         assembly was already loaded in another appdomain. Fixes #78083.
7429
7430 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
7431
7432         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
7433         referenced assemblies.
7434         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
7435
7436         * domain.c (mono_domain_free): Add a trace message.
7437
7438         * appdomain.c (add_assemblies_to_domain): Ditto.        
7439
7440         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
7441         field.  
7442
7443 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
7444
7445         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
7446
7447 2006-04-12  Martin Baulig  <martin@ximian.com>
7448
7449         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
7450         `USE_INCLUDED_LIBGC'.   
7451
7452 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
7453
7454         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
7455         the patch contains ../ and a small directory name later. Hopefully fixes
7456         #78035.
7457
7458 2006-04-10  Martin Baulig  <martin@ximian.com>
7459
7460         Clean up the debugger's thread-handling code.
7461
7462         The debugger's thread-handling code has been moved from
7463         ../mini/debug-debugger.c to threads.c.  We now iterate directly
7464         over the `threads' hash, keep track of exiting threads and also
7465         use proper locking.
7466
7467         We can now debug XSP and XSP based applications with the debugger.
7468
7469         * object-internals.h (MonoThread): Added `gpointer end_stack'.
7470
7471         * threads.h
7472         (MonoThreadCallbacks): Removed; this was only used by the debugger.
7473         (mono_install_thread_callbacks): Likewise.      
7474
7475         * threads.c (mono_thread_callbacks): Removed.
7476         (debugger_thread_created, debugger_thread_exited): New static functions.
7477         (start_wrapper): Call debugger_thread_created().
7478         (thread_cleanup): Call debugger_thread_exited().
7479         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
7480         (mono_debugger_init_threads): New public function.
7481         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
7482         iterate directly over the `threads' hash and also use proper locking.
7483
7484         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
7485
7486         * mono-debug-debugger.h
7487         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
7488
7489 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
7492         argument type=array. Fixes #78057.
7493
7494 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
7495
7496         * culture-info-table.h : regenerated. Fixed bug #69652.
7497
7498 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * loader.c metadata.c: Reapply a variant r59116.
7501         
7502         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
7503
7504         * class.c (mono_class_setup_interface_offsets): New internal function.
7505
7506         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
7507         interfaces too. Fixes #77398.
7508
7509         * reflection.c (encode_cattr_value): Add support for 
7510         parameter type=object, argument type=array.
7511         (load_cattr_value): Ditto. Fixes #77916.
7512
7513         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
7514         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
7515
7516         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
7517         a byval char array and CharSet is Ansi.
7518
7519         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
7520
7521 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
7522
7523         * metadata.c: Add some locking comments.
7524         
7525         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
7526         mempool.
7527         (mono_metadata_free_method_signature): Don't free the signature itself.
7528
7529         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
7530
7531         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
7532         reference the same MonoImage.
7533         (mono_assembly_load_from_full): Add an assert.
7534
7535 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
7536
7537         * image.c (mono_image_close): Don't put the image we are about to free into the
7538         loaded_images_guid_hash.
7539
7540         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
7541         to reduce code duplication.
7542
7543         * marshal.c: Register the native functions called by this module as icalls, to
7544         somewhat centralize the creation of MonoMethodSignature's.
7545
7546         * loader.c (mono_method_signature): Add a cache for method signatures.
7547
7548         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
7549         the parameter attributes of a method.
7550         (mono_metadata_parse_method_signature_full): Refactored the computation of
7551         parameter attributes into a separate function. Also avoid one allocation in
7552         most cases.
7553
7554         * assembly.c (mono_assembly_close): Ditto.
7555
7556         * image.c (mono_image_close): Log trace messages with INFO level.
7557
7558         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
7559
7560         * image.c reflection.c: Correct reference counting of image modules.
7561         
7562         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
7563         of this function from the image mempool.
7564         
7565         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
7566         to allow more cached types to be used.
7567
7568         * mono-debug.c (mono_debug_add_method): Appled patch from
7569         David S. Miller  <davem@sunset.davemloft.net>: Access 
7570         minfo->lexical_blocks[] entry elements using read32().
7571
7572 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * loader.c (mono_free_method): No longer free the method header for non-dynamic
7575         methods as it is allocated from the mempool.
7576
7577         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
7578         image mempool.
7579
7580         * metadata-internals.h: Add comments describing the reference counting scheme
7581         used for MonoImage and MonoAssembly.
7582
7583         * image.c assembly.c reflection.c: Rework reference counting of images and 
7584         assemblies so they are freed when the runtime is shut down. Free some 
7585         additional memory structures when an image is unloaded.
7586         
7587 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
7588
7589         * class.c loader.c reflection.c: Allocate more data structures in
7590         the image mempool.
7591
7592 2006-03-31  Miguel de Icaza  <miguel@novell.com>
7593
7594         * icall.c
7595         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
7596         build on pre glib 2.4 systems.
7597
7598 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
7601
7602         * icall.c: Fix some warnings.
7603
7604 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
7605
7606         * culture-info-table.h : regenerated.
7607
7608 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
7609
7610         * threads.c, object-internals.h, verify.c: changed the culture caching
7611         code to use a normal MonoArray for storage so the GC can keep track of
7612         them easily. Fixed bits of the cache logic, too and simplified the
7613         code.
7614
7615 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
7616
7617         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
7618         thread for non-Boehm GCs.
7619
7620 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
7621
7622         * domain.c, object.c, domain-internals.h: reduce the amount of memory
7623         needed to keep track of the data for static fields.
7624
7625 2006-03-29  Raja R Harinath  <rharinath@novell.com>
7626
7627         Fix #75172
7628         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
7629         for interface classes.  Use 'num_methods' instead.
7630         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
7631         before using '->vtable_size' field.
7632
7633 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
7634
7635         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
7636         doesn't contain managed pointers, so use a normal hashtable.
7637
7638 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
7639
7640         * reflection.c, class-internals.h, domain.c: fixed handling of types
7641         used as values for objects in custom attributes (bug #77915):
7642
7643 2006-03-24  Martin Baulig  <martin@ximian.com>
7644
7645         * class.c (mono_class_setup_fields): Added support for generic
7646         instances; fixes #77580.
7647
7648 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7649
7650         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
7651
7652 2006-03-24  Dick Porter  <dick@ximian.com>
7653
7654         * file-io.c (get_file_attributes): More stat macro breakage.
7655         Fixes bug 77759.
7656
7657 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
7658
7659         * profiler.c: added the file=filename option in the default profiler
7660         to output the profile data to filename.
7661
7662 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7663
7664         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
7665         bug #77877.
7666
7667 2006-03-22  Martin Baulig  <martin@ximian.com>
7668
7669         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
7670         allocated `MonoClassField *' in `fb->handle'.
7671
7672 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7673
7674         * class.c, image.c, metadata-internals.h: implemented new mechanism to
7675         allocate interface ID to save memory and allow better ID reuse on
7676         appdomain unload. setup_generic_vtable () removal from Martin.
7677
7678 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
7679
7680         * object.h, appdomain.c, domain.c, exception.c, icall.c,
7681         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
7682         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
7683         write barriers for reference stores with managed objects accessed with
7684         C structures in the runtime and in embedding programs.
7685
7686 2006-03-20  Raja R Harinath  <rharinath@novell.com>
7687
7688         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
7689         'interface_id' and 'max_interface_id' fields of MonoClasses
7690         representing open generic types.
7691
7692 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
7693
7694         * object.h, object.c, icall.c: added functions to deal with
7695         storing valuetypes that contain references in managed objects.
7696         * reflection.c, string-icalls.c, threads.c, marshal.c: small
7697         fixes and comments around uses of mono_array_addr ().
7698
7699 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
7700
7701         * object.h, icall.c, monitor.c: object.GetHashCode ()
7702         implementation that supports the moving garbage collector.
7703
7704 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
7705
7706         * icall.c, threads-types.h, threads.c: implemented finalizer for
7707         LocalDataStoreSlot.
7708
7709 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * metadata.c (mono_type_size): Add a fixme.
7712         (mono_type_stack_size): Ditto.
7713
7714         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
7715         'type_forwarders' field.
7716
7717         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
7718         attribute from net 2.0.
7719
7720         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
7721         from class.c.
7722
7723         * class.c (mono_class_setup_fields): Fix a warning.
7724         
7725         * class.c (mono_class_from_name): Add support for assemblyref entries
7726         in the EXPORTEDTYPE table.
7727
7728         * reflection.c: Add support for handling type forwarders under net 2.0.
7729
7730         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
7731         
7732 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
7733
7734         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
7735         overwriting entries in ModuleBuild->types, also clean up the code
7736         a little. Fixes #77774.
7737
7738 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
7739
7740         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
7741         load friend assembly info when present.
7742
7743 2006-03-14  Raja R Harinath  <rharinath@novell.com>
7744
7745         Fix crasher on gtest-158.cs.
7746         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
7747         the return value if the MonoClass we want is yet in an
7748         inconsistent state.
7749         * class.c (mono_class_create_from_typedef): Add an comment
7750         explaining an order dependency between mono_class_setup_parent and
7751         mono_class_setup_mono_type.
7752
7753 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
7754
7755         * class.c: documentation updates and events bug fix.
7756
7757 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
7758
7759         * class.c: some cleanup, locking fixes.
7760
7761 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
7762
7763         * class.c: fix the generics code to setup nested
7764         type info to the instantiated type (bug #77770).
7765
7766 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
7767
7768         * marshal.c: fixed a few type correctness issues.
7769
7770 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7771
7772         * loader.c: the Set/Get/Addrtess array methods should be public.
7773
7774 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
7775
7776         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
7777         
7778         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
7779         info->wrapper.
7780
7781 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
7782
7783         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
7784
7785         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
7786
7787         * mempool.c (mono_mempool_alloc): Speed this up a bit.
7788         (mono_mempool_alloc0): Ditto.
7789
7790 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7791
7792         * socket-io.c:
7793         (create_object_from_sockaddr): it was allocating 4 extra bytes
7794         for the AF_UNIX data. Fixes bug #77747.
7795
7796 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
7797
7798         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
7799
7800 2006-03-09  Dick Porter  <dick@ximian.com>
7801
7802         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
7803         Fixes bug 76966 again.
7804
7805 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
7806
7807         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
7808         names from r57532
7809         * appdomain.c: Bumped corlib version to 48 (due to r57532)
7810
7811 2006-03-07  Martin Baulig  <martin@ximian.com>
7812
7813         * object.c
7814         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
7815
7816 2006-03-07  Martin Baulig  <martin@ximian.com>
7817
7818         * class.c
7819         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
7820         regression introduced in r56970; see gtest-252.cs.
7821
7822         * loader.c (mono_get_method_constrained): Correctly handle generic
7823         methods; see gtest-253.cs.
7824
7825 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
7826
7827         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
7828
7829 2006-03-04  Martin Baulig  <martin@ximian.com>
7830
7831         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
7832         compute the parent type at runtime, just like we're already doing
7833         it for interfaces.
7834
7835         * reflection.c
7836         (mono_reflection_bind_generic_parameters): Don't compute the
7837         parent type anymore.
7838
7839         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
7840
7841 2006-03-04  Martin Baulig  <martin@ximian.com>
7842
7843         * mono-debug-debugger.h
7844         (mono_debugger_create_notification_function): Allocate memory at
7845         runtime and return a pointer to it.
7846
7847 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * assembly.c: Fix windows build.
7850         
7851         * assembly.c: Fix build.
7852
7853         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
7854
7855         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
7856         
7857 2006-03-03  Dick Porter  <dick@ximian.com>
7858
7859         * process.c
7860         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
7861         Check parameters before dereferencing them.  Fixes Aaron's part of
7862         bug 77393.
7863
7864 2006-03-03  Raja R Harinath  <rharinath@novell.com>
7865
7866         Fix performance regression.
7867         * loader.c (find_method_in_class): Add 'from_class' argument.
7868         Rename 'klass' argument to 'in_class'.  The signature is compared
7869         against the method in 'in_class', and the corresponding method is
7870         returned from 'from_class'.
7871         (find_method): Walk both 'in_class' and 'from_class' in parallel.
7872         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
7873         type definition and generic instantiation in parallel.
7874         (mono_get_method_constrained): Update to changes.
7875
7876 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
7877
7878         * threads.c: make sure the domain is correct, too when doing
7879         mono_thread_attach ().
7880
7881 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
7882
7883         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
7884         windows. Fixes #77683.
7885
7886 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
7887
7888         * object.h, *: introduced specific way to set elements of an array
7889         of references to be used as write barrier. Still need to audit the
7890         uses of mono_array_addr.
7891
7892 2006-03-01  Miguel de Icaza  <miguel@novell.com>
7893
7894         * object-internals.h: New field to cache the assmebly name, patch
7895         from Tambet Ingo (tambet@ximian.com)
7896
7897 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
7898
7899         * decimal.h, class-internals.h, metadata-internals.h,
7900         file-io.h: mark a few function declarations as internal, to
7901         reduce the number of PLT entries.
7902
7903 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7904
7905         * file-io.c: fix typo in warning message.
7906
7907 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
7908
7909         * loader.c: on unix, lookup the "*A" version of a function
7910         if charset is auto as a second option before failing.
7911
7912 2006-02-28  Raja R Harinath  <rharinath@novell.com>
7913
7914         * class.h (mono_class_inflate_generic_method): Revert to two
7915         argument version.
7916         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
7917         (mono_class_inflate_generic_method_full): Add.
7918         * class.c (mono_class_inflate_generic_method_full): Rename from
7919         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
7920         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
7921         * loader.c, reflection.c: Update to changes.
7922
7923 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
7924
7925         * icall.c: const fixes and small improvements.
7926
7927 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7928
7929         * threadpool.c: for asynchronous connect(), enable the same workaround
7930         for BSD 6 as for the Mac. Fixes bug #77637.
7931
7932 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
7935         formatted classes. Fixes #77524.
7936
7937 2006-02-24  Raja R Harinath  <rharinath@novell.com>
7938
7939         * class.c (inflate_generic_type): Add a couple more
7940         micro-optimizations.
7941         (inflate_generic_context): Don't use the 'gmethod' from
7942         'inflate_with'.
7943         (mono_class_inflate_generic_method): If the method has generic
7944         parameters, but the passed-in context doesn't have a 'gmethod',
7945         create one.  Use the possibly simplified generic instantiation
7946         from the declaring class instead of the one passed in.
7947
7948 2006-02-24  Raja R Harinath  <harinath@gmail.com>
7949
7950         Make generic method signature and method header handling lazy.
7951         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
7952         (inflate_generic_header): Likewise.
7953         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
7954         parameter to avoid inflating types.
7955         (mono_get_inflated_method): Empty out.
7956         * class.h (mono_class_inflate_generic_method): Update to changes.
7957         * loader.c (mono_get_method_from_token): Don't parse signature for
7958         generic methods, nor methods of generic classes.
7959         (mono_method_signature): Rename from 'mono_method_signature'.
7960         Inflate signature on demand.
7961         (mono_method_get_header): Inflate method header on demand.
7962         * reflection.c: Update to changes.
7963
7964 2006-02-23  Raja R Harinath  <rharinath@novell.com>
7965
7966         * metadata.c (mono_metadata_inflate_generic_inst): If the
7967         instantiation is closed, don't bother expanding it in the new
7968         context.
7969         * class.c (inflate_generic_class): If the generic instantiation
7970         doesn't change after inflation, return the argument itself.
7971         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
7972         Add bounds checks.
7973         (inflate_generic_context): If neither the generic class nor the
7974         generic method instantiations change, return the original context.
7975         * reflection.c (mono_method_get_object): Do
7976         'mono_get_inflated_method' before accessing the ->klass field.
7977         (inflate_mono_method): Don't create a MonoGenericMethod unless
7978         necessary.
7979         (inflate_method): Don't pass a constructed type as the declaring
7980         type of a methodbuilder.
7981
7982 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
7983
7984         * object.c: fix memory overwrite.
7985
7986 2006-02-22  Dick Porter  <dick@ximian.com>
7987
7988         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
7989         it doesn't work any more.
7990         (mono_threads_request_thread_dump): Fix unused variable warnings.
7991
7992 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7993
7994         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
7995         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
7996         the public header file.
7997
7998 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
7999
8000         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
8001
8002 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8003
8004         * class-internals.h, object.c: reduce the size of MonoVTable
8005         and store the interface_offsets array at negative offsets.
8006
8007 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8008
8009         * metadata.c: tweak table descriptors data structures to reduce
8010         size and runtime relocations.
8011
8012 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8013
8014         * marshal.c: fix some types and opcodes to be type-safe
8015         in marshaling wrappers.
8016
8017 2006-02-21  Ankit Jain  <jankit@novell.com>
8018
8019         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
8020
8021 2006-02-21  Raja R Harinath  <rharinath@novell.com>
8022
8023         * metadata.c (get_constraints): Relax debugging checks for monodis.
8024
8025 2006-02-21  Ankit Jain  <jankit@novell.com>
8026
8027         * metadata.c (mono_metadata_load_generic_params): Move the code
8028         checking for ambiguous generic params from here to mono/dis/get.c
8029         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
8030
8031 2006-02-21  Raja R Harinath  <harinath@gmail.com>
8032
8033         Fix assertion triggered when compiling nemerle.
8034         * class.c (mono_get_shared_generic_inst): Rename from
8035         get_shared_inst and make non-static.
8036         * loader.c (mono_get_shared_generic_method): New.  Used to create
8037         the MonoGenericContext-equivalent of a MonoGenericContainer.
8038         (mono_get_method_from_token): Initialize the 'context' field of
8039         the created MonoGenericContainer.
8040         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
8041         * metadata.c (get_constraints): Add sanity check.
8042         * class-internals.h: Add new internal methods.
8043
8044         * reflection.c (verify_safe_for_managed_space): New sanity check.
8045         Currently checks that owner-less generic parameters aren't allowed
8046         in managed space.
8047         (mono_type_get_object): Use it.
8048         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
8049         that are now in mono_type_get_object.
8050         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
8051
8052 2006-02-19  Raja R Harinath  <harinath@gmail.com>
8053
8054         * metadata.c (mono_type_create_from_typespec): Rename from
8055         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
8056         argument and caching of types in the generic container.
8057         (unwrap_arrays, find_generic_param): Remove.
8058         * metadata-internals.h: Update.
8059         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
8060
8061 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
8062
8063         * class.c (mono_class_get_exception_for_failure): Fix a warning.
8064
8065         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
8066         return values. Fixes #77581.
8067
8068         * class.c (mono_fnptr_class_get): Switch name and name_space.
8069
8070         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
8071         classes and add support for [In, Out] attributes.
8072         (mono_marshal_free_asany): Ditto. Fixes #77524.
8073
8074 2006-02-18  Raja R Harinath  <harinath@gmail.com>
8075
8076         * class.c (mono_class_from_generic_parameter): Make more robust to
8077         incomplete MonoGenericContainers from monodis.
8078
8079 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
8080
8081         * class-internals.h: added some more exception types.
8082         * class.c, metadata.c: added a few checks to handle missing
8083         types.
8084
8085 2006-02-17  Raja R Harinath  <rharinath@novell.com>
8086
8087         Use owner-less generic-params some more.
8088         * class.c (my_mono_class_from_generic_parameter): Remove.
8089         (mono_class_from_generic_parameter): Handle null image,
8090         param->name and param->owner.
8091         (mono_class_from_mono_type): Update.
8092         (mono_class_create_from_typespec): Remove 'container' parameter.
8093         If that parameter is non-null, the result is always inflated by
8094         'mono_class_get_full' anyway.
8095         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
8096         parameter.
8097         (mono_class_get_full): Update.
8098
8099         * class.c (inflate_generic_type) [GENERICINST]: If the generic
8100         instance is not open, don't bother inflating.
8101         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
8102         parse metadata for inflated classes.
8103         (_mono_class_get): Change GenericContext* parameter to
8104         GenericContainer*.
8105         (mono_class_create_from_typespec): Likewise.  Simplify, and
8106         implement trivially.  All the cases are handled in
8107         mono_class_from_mono_type.  Don't inflate returned class.
8108         (mono_class_get_full): Delegate GENERICINST optimization to
8109         inflate_generic_type.
8110         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
8111
8112 2006-02-16  Dick Porter  <dick@ximian.com>
8113
8114         * socket-io.c (create_object_from_sockaddr): Fix typo.
8115         (create_sockaddr_from_object): Check array lengths before
8116         potentially accessing items off the end.
8117         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
8118         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
8119         (ves_icall_System_Net_Sockets_Socket_Send_internal)
8120         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
8121         length checks to avoid wraparound overflows.
8122         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
8123         contents of the array of sockets
8124         (hostent_to_IPHostEntry2)
8125         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
8126         Check return value of inet_ntop ().
8127         (addrinfo_to_IPHostEntry): Fix typo
8128
8129 2006-02-16  Raja R Harinath  <rharinath@novell.com>
8130
8131         Type metadata parsing doesn't use generic-instantiation information.
8132         * metadata.c (mono_metadata_parse_array_full): Change
8133         MonoGenericContext* parameter to MonoGenericContainer*.
8134         (mono_metadata_parse_type_full): Likewise.
8135         (mono_type_create_from_typespec_full): Likewise.
8136         (mono_metadata_parse_mh_full): Likewise.
8137         (mono_metadata_parse_generic_inst): Likewise.
8138         (do_mono_metadata_parse_generic_class): Likewise.
8139         (do_mono_metadata_parse_type): Likewise.
8140         * metadata-internals.h: Update to changes.
8141         * class.c (mono_class_find_enum_basetype): Likewise.
8142         (mono_class_setup_fields): Likewise.
8143         (mono_class_create_from_typespec): Likewise.
8144         * loader.c (method_from_methodspec): Likewise.
8145         (mono_get_method_from_token): Likewise.
8146         (mono_method_get_header): Likewise.
8147
8148 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8149
8150         * marshal.c: handle additional GENERICINST case (patch from
8151         Thong Nguyen <tum@veridicus.com>).
8152         Fix a few cases where LDIND_I/STIND_I was used for references.
8153
8154 2006-02-16  Raja R Harinath  <rharinath@novell.com>
8155
8156         * reflection.c (mono_reflection_get_token): Remove unused variable.
8157
8158 2006-02-16  Martin Baulig  <martin@ximian.com>
8159
8160         * reflection.c (mono_reflection_get_token): Add support for fields
8161         in instantiated generic types.
8162
8163         * icall.c
8164         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
8165
8166 2006-02-15  Martin Baulig  <martin@ximian.com>
8167
8168         * icall.c
8169         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
8170         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
8171         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
8172         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
8173
8174 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
8175
8176         * class.c, metadata.c, metadata.h, object.c, icall.c,
8177         marshal.c: changed mono_type_get_underlying_type () to do
8178         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
8179         Fixed handling of instantiated generic valuetypes (bug #75479).
8180
8181 2006-02-15  Raja R Harinath  <rharinath@novell.com>
8182
8183         * metadata.c (mono_metadata_decode_signed_value): Simplify.
8184         Delegate to mono_metadata_decode_value, and work on the returned value.
8185
8186         * icall.c (ves_icall_MonoType_GetGenericArguments):
8187         Add consistency check here too.
8188         
8189 2006-02-15  Ankit Jain  <jankit@novell.com>
8190
8191         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
8192         char/short etc.
8193
8194 2006-02-15  Ankit Jain  <jankit@novell.com>
8195
8196         * metadata.c (mono_metadata_decode_signed_value): New function to decode
8197         signed values, used only for representing lower bounds of arrays.
8198         (mono_metadata_parse_array_full): Use new
8199         mono_metadata_decode_signed_value to decode lower bounds.
8200
8201 2006-02-14  Martin Baulig  <martin@ximian.com>
8202
8203         * reflection.c
8204         (mono_reflection_get_token): Support "MonoGenericMethod" and
8205         "MonoGenericCMethod" and allow generic instances / methods.
8206
8207 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
8210         to obtain the terminal size using an ioctl.
8211
8212         * object.c (mono_nullable_init): Revert this as nullable reference
8213         types are not valid.
8214         (mono_nullable_box): Ditto.
8215
8216 2006-02-09  Dick Porter  <dick@ximian.com>
8217
8218         * threads.c (mono_thread_detach): Drop a reference to the thread
8219         we're detaching.
8220
8221 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
8222
8223         * object.c (mono_nullable_init): Handle nullable reference types.
8224         (mono_nullable_box): Ditto. Fixes #77446.
8225
8226 2006-02-07  Martin Baulig  <martin@ximian.com>
8227
8228         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
8229
8230 2006-02-07  Ankit Jain  <jankit@novell.com>
8231
8232         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
8233         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
8234         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
8235         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
8236         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
8237         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
8238
8239 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
8240
8241         * class.c (mono_class_create_generic): Set type_token as well.
8242
8243         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
8244         compatible with MS.
8245
8246 2006-02-02  Martin Baulig  <martin@ximian.com>
8247
8248         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
8249         has never been used so far.
8250
8251 2006-02-02  Martin Baulig  <martin@ximian.com>
8252
8253         * mono-debug-debugger.h: Changed comment at the top of this file;
8254         the header is not installed, but it's safe to #include it from
8255         within the JIT.
8256
8257         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
8258         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
8259
8260 2006-02-02  Martin Baulig  <martin@ximian.com>
8261
8262         * mono-debug.h
8263         (MonoSymbolTable): Removed the `metadata_info' field.
8264
8265         * mono-debug.c
8266         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
8267
8268         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
8269         (mono_debugger_add_builtin_types): Removed.
8270         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
8271         (mono_debugger_create_notification_function): We now operate on a
8272         pre-allocated area; take a `gpointer' and return `void'.
8273
8274         * mono-debug-debugger.c
8275         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
8276         (mono_debugger_add_builtin_types): Removed.
8277
8278 2006-02-02  Martin Baulig  <martin@ximian.com>
8279
8280         * threads.c (mono_debugger_create_all_threads): New public method.
8281
8282 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
8283
8284         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
8285         breaks on several platforms.
8286
8287 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
8288
8289         * assembly.c: the VS.NET build doesn't supply default values for
8290         MONO_ASSEMBLIES and MONO_CFG_DIR.
8291
8292 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
8295         helper function.
8296
8297         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
8298
8299         * loader.c (method_from_memberref): Fix a warning.
8300
8301         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
8302
8303         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
8304         with explicit layout. Fixes #77433.
8305
8306 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
8307
8308         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
8309         max_interface_id is initialized before using it. Fixes #77398.
8310         (ves_icall_Type_GetInterfaces): Ditto.
8311
8312 2006-01-30  Raja R Harinath  <rharinath@novell.com>
8313
8314         * metadata.c (mono_metadata_parse_method_signature_full): Don't
8315         allocate memory for parameter attributes when parsing memberref
8316         signatures.
8317         * loader.c (mono_loader_set_error_method_load): Don't warn.
8318         (method_from_memberref): Ensure MissingMethodException gets thrown
8319         if method is not found.  Make warning more informative.
8320
8321 2006-01-29  Raja R Harinath  <harinath@gmail.com>
8322
8323         Fix #77397
8324         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
8325         return true if is byref.
8326         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
8327         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
8328         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
8329
8330 2006-01-27  Raja R Harinath  <rharinath@novell.com>
8331
8332         Fix tests/find-method.2.il
8333         * loader.c (find_method, find_method_in_class): Remove is_inflated
8334         argument.  Revert 2006-01-18 change.
8335         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
8336         is generic, search for method in its generic definition.
8337         * class.c (mono_class_setup_vtable_general): Print generic
8338         arguments of generic types in debugging printf.
8339
8340 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
8343
8344         * threads.c (mono_threads_request_thread_dump): New helper function.
8345
8346 2006-01-25  Raja R Harinath  <rharinath@novell.com>
8347
8348         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
8349
8350 2006-01-25  Ankit Jain  <jankit@novell.com>
8351
8352         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
8353         move definition to ..
8354         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
8355         
8356 2006-01-25  Ankit Jain  <jankit@novell.com>
8357             Raja R Harinath  <rharinath@novell.com>
8358
8359         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
8360         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
8361         as necessary.
8362
8363 2006-01-25  Martin Baulig  <martin@ximian.com>
8364
8365         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
8366         `MonoDebuggerThread' into debug-debugger.c.
8367
8368 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8369
8370         * profiler.c: fix printing of data.
8371
8372 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
8373
8374         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
8375           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
8376
8377 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
8378
8379         * object.c: fix deadlock related to string interning.
8380
8381 2006-01-23  Martin Baulig  <martin@ximian.com>
8382
8383         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
8384
8385         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
8386
8387 2006-01-23  Martin Baulig  <martin@ximian.com>
8388
8389         * mono-debug.h: Moved the prototypes of some functions which are
8390         used by the JIT here from mono-debug-debugger.h.
8391
8392 2006-01-21  Martin Baulig  <martin@ximian.com>
8393
8394         * Makefile.am: Don't install mono-debug-debugger.h.
8395
8396 2006-01-21  Martin Baulig  <martin@ximian.com>
8397
8398         * mono-debug-debugger.h: Enforce the private status of this header
8399         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
8400         Moved some stuff from mono-debugger-jit-wrapper.h here.
8401
8402 2006-01-20  Raja R Harinath  <rharinath@novell.com>
8403
8404         * class.c (mono_class_from_typeref): Add a sanity test to help
8405         catch lack of assembly load/search hooks.
8406
8407 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
8408
8409         * marshal.c (emit_struct_conv): Relax the fields with same offset
8410         check even more. Fixes #77230.
8411
8412 2006-01-18  Martin Baulig  <martin@ximian.com>
8413
8414         * loader.c (find_method_in_class): Added `gboolean is_inflated'
8415         argument; if false, we compare the uninstantiated signatures.
8416         (method_from_memberref): Compare the uninstantiated signatures;
8417         fixes #76417.
8418
8419 2006-01-18  Robert Jordan  <robertj@gmx.net>
8420
8421         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
8422         Clear the weak link. Fixes bug #77170.
8423
8424         * gc.c (mono_gchandle_free):
8425         Reflect *-gc.c changes (tiny optimization).
8426
8427 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * metadata.c (mono_metadata_signature_dup): Applied patch from
8430         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
8431         Fixes #77288.
8432
8433 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
8434
8435         * marshal.c (emit_struct_conv): Allow fields with the same offset when
8436         marshalling from native to managed code. Fixes #77230.
8437
8438 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8439
8440         * threadpool.c: fix problem (Mac only) when more than one asynchronous
8441         connect. Fixes bug #77020.
8442
8443 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8444
8445         * class.c: fixed id assignement for nested interfaces (bug #77275).
8446         Added also better info for --print-vtable debugging.
8447
8448 2006-01-12  Martin Baulig  <martin@ximian.com>
8449
8450         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
8451         interfaces on-the-fly; fixes #76625.
8452
8453         * class-internals.h
8454         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
8455         don't need that anymore.
8456
8457 2006-01-12  Miguel de Icaza  <miguel@novell.com>
8458
8459         * socket-io.c
8460         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
8461         To avoid initing the nested_classes when not needed I turned the
8462         PeerCredData as a toplevel internal class, as it has to be shared
8463         anyways. 
8464
8465         Fixes the CASA issue.
8466
8467 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
8468
8469         * domain.c: Accessors for MonoJitInfo
8470
8471         * profiler-private.h: Add jitinfo to the end jit hook
8472
8473         * profiler.[ch]: Define new hooks, called after jitting which give
8474         the MonoJitInfo that was compiled
8475
8476 2006-01-10  Martin Baulig  <martin@ximian.com>
8477
8478         * class.c (mono_class_setup_events): Add support for generic
8479         classes; fixes #76440.
8480
8481 2006-01-06  Raja R Harinath  <rharinath@novell.com>
8482
8483         Fix #77160.
8484         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
8485         on passed-in method.
8486
8487 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
8488
8489         * object.c (mono_runtime_invoke_array): Add Nullable support.
8490
8491         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
8492
8493 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
8494
8495         * file-io.c: Don't consider sockets as directory and avoid an endless
8496         loop. Fix bug #76966.
8497
8498 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
8499
8500         * object.c (mono_nullable_init): New helper function.
8501         (mono_nullable_box): Ditto.
8502
8503         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
8504
8505         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
8506
8507         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
8508         
8509 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * class.c (mono_class_is_assignable_from): Make T assignable to 
8512         Nullable<T>.
8513
8514 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
8515
8516         * appdomain.c: Bump corlib version to 46.
8517         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
8518         serialization purpose) and changed ves_icall_System_Reflection_
8519         Assembly_get_code_base signature to accept a boolean (to escape, or 
8520         not, the assembly code base).
8521
8522 2005-12-23  Dick Porter  <dick@ximian.com>
8523
8524         * icall.c: 
8525         * threads-types.h: 
8526         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
8527         CreateEvent icall now returns "created" boolean parameter.
8528
8529 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
8530
8531         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
8532         #76967.
8533
8534         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
8535         when attr_klass is an interface. Fixes #77045.
8536
8537 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * marshal.c (emit_struct_conv): Fix previous patch.
8540         
8541         * marshal.c (emit_struct_conv): Add a check for fields with the same
8542         offset.
8543
8544 2005-12-20  Raja R Harinath  <rharinath@novell.com>
8545
8546         Fix regression in Mono.C5.
8547         * class.c (mono_class_create_generic): If 'klass' is an interface
8548         set up the interface offsets.
8549         (mono_class_is_assignable_from): Don't throw away generic arguments.
8550
8551 2005-12-19  Raja R Harinath  <rharinath@novell.com>
8552
8553         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
8554         type parameters.
8555
8556 2005-12-15  Raja R Harinath  <rharinath@novell.com>
8557
8558         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
8559         dead store.
8560         (do_mono_metadata_parse_generic_class): Don't pass the current
8561         generic context when parsing the type being instantiated: it
8562         cannot use it, anyway.
8563
8564         * loader.c (method_from_memberref): Don't inflate a signature if
8565         it doesn't contain any type parameters.
8566
8567 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
8568
8569         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
8570
8571 2005-12-14  Martin Baulig  <martin@ximian.com>
8572
8573         * class.c
8574         (mono_type_get_name_recurse): Don't return null for type
8575         parameters and open generic classes.
8576         (mono_class_setup_methods): Don't exclude generic instances.
8577         (mono_get_unique_iid): Use different IDs for different
8578         instantiations of the same generic type.
8579         (mono_class_setup_vtable): Only use setup_generic_vtable() for
8580         open generic instances; create a normal vtable for closed generic
8581         instances.
8582         (mono_class_setup_vtable_general): We're now also called for
8583         closed generic instances.
8584
8585         * reflection.c
8586         (mono_reflection_bind_generic_parameters): Correctly use
8587         mono_metadata_lookup_generic_inst() everywhere.
8588
8589 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
8590
8591         * object.c (mono_class_create_runtime_vtable): Call 
8592         mono_class_setup_vtable ().
8593
8594         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
8595         function.
8596         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
8597         #76959.
8598
8599         * loader.c (mono_loader_set_error_type_load): Print the type load
8600         warnings to the console so they are more visible to the user.
8601         (mono_loader_set_error_method_load): Ditto.
8602
8603         * reflection.c (ensure_runtime_vtable): Revert the last change as it
8604         is still broken.
8605         
8606         * reflection.c (ensure_runtime_vtable): Fix build.
8607
8608         * reflection.c (ensure_runtime_vtable): Disable an optimization which
8609         doesn't work in all cases.
8610
8611 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * object.c (mono_array_new_full): Treat a single dimensional array
8614         with 0 lower bounds as an szarray. Fixes #76973.
8615
8616         * reflection.c (custom_attr_visible): Really fix this.
8617
8618 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
8619
8620         * reflection.c (custom_attr_visible): Allow nested public attributes
8621         as well.
8622
8623         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
8624         interface check.
8625
8626 2005-12-12  Raja R Harinath  <harinath@gmail.com>
8627
8628         * class.c (set_generic_param_owner): Delete.
8629         (mono_class_create_from_typedef): Don't set ->owner field of
8630         generic parameters to "param containers" of enclosing classes.
8631         * reflection.c (mono_reflection_initialize_generic_parameter):
8632         Likewise.
8633
8634 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * reflection.c (custom_attr_visible): Fix build.
8637
8638 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
8641         private attributes.
8642         
8643         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
8644         handling of null parameter defaults.
8645
8646 2005-12-09  Raja R Harinath  <rharinath@novell.com>
8647
8648         * class.c (mono_class_from_generic_parameter): Don't set
8649         klass->generic_container.
8650         (my_mono_class_from_generic_parameter): Likewise.
8651
8652 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * reflection.c (load_public_key): Fix a warning.
8655         (method_encode_code): Fix unaligned accesses.
8656
8657 2005-12-07  Martin Baulig  <martin@ximian.com>
8658
8659         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
8660
8661         * reflection.c
8662         (write_generic_param_entry): Encode our custom attrs.
8663
8664         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
8665
8666 2005-12-07  Martin Baulig  <martin@ximian.com>
8667
8668         * reflection.c (encode_new_constraint): Removed; we don't use the
8669         `NewConstraintAttribute' anymore.
8670
8671 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
8672
8673         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
8674         not fire a TypeResolve event when Assembly.GetType () is called.
8675
8676 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
8677
8678         Beginning of support for nullable types in the runtime. Parts of
8679         this patch are from Martin.
8680
8681         * appdomain.c (MONO_CORLIB_VERSION): Bump
8682
8683         * domain.c (mono_init_internal): get the nullable type
8684
8685         * class.c (mono_class_is_nullable): New method
8686         (mono_class_get_nullable_param): New mehod
8687         (mono_class_create_generic): In types T? set cast_class to T
8688
8689         * class-internals.h (MonoDefaults): new nullable default class
8690         (mono_class_get_nullable_param, mono_class_get_nullable_param):
8691         new methods.
8692
8693 2005-12-05  Raja R Harinath  <rharinath@novell.com>
8694
8695         * metadata.c (select_container): New.  Refactor code to select the
8696         appropriate GenericContainer given the type of generic parameter
8697         we are looking for.
8698         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
8699         not a MonoGenericContext.  Use select_container.  Update parameters.
8700         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
8701         and MONO_TYPE_MVAR.
8702         (unwrap_arrays): Remove duplicate tests.
8703         (find_generic_param): Rename from 'has_same_context'.  Now walks a
8704         generic instantiated class to find any arguments that are generic
8705         parameters.
8706         (mono_type_create_from_typespec_full): Use find_generic_param to
8707         avoid evicting some generic instantiations from the typespec
8708         cache.
8709
8710 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
8711
8712         * reflection.c: fixed writing of doubles on ARM FPA.
8713
8714 2005-12-02  Robert Jordan  <robertj@gmx.net>
8715
8716         * icall.c: Fixed EventInfo.ReflectedType (#76829).
8717
8718 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8719
8720         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
8721         least on SUSE 10 they are not the same (on debian, they are just the
8722         same thing).
8723
8724 2005-12-01  Raja R Harinath  <rharinath@novell.com>
8725
8726         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
8727         DeclaringType for VARs and MVARs.
8728         * class.c (set_generic_param_owner): Fix initialization of owner
8729         fields.
8730
8731 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
8732
8733         * icall.c: fixed Enum.ToObject() to correctly convert the values.
8734
8735 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8736
8737         * threadpool.c: workaround for a bug that shows up on the Mac:
8738         select()+connect() on a blocking socket is not like it should
8739         be, so we proceed to connect() in that case, wasting the I/O
8740         threadpool thread until connect succeedes. Fixes bug #75436.
8741
8742 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8743
8744         * threadpool.c: fix typo when setting file descriptor states.
8745
8746 2005-11-28  Raja R Harinath  <rharinath@novell.com>
8747
8748         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
8749         * metadata.c (mono_metadata_parse_method_signature_full): Don't
8750         create a temporary signature container.
8751         (mono_metadata_parse_generic_param): Update to changes.
8752         (mono_type_create_from_typespec_full): Update to changes.
8753         * loader.c (method_from_memberref): Don't use a
8754         MonoGenericContainer while parsing a memberref signature.
8755         (method_from_methodspec): Remove dead-store of the 'container'
8756         variable.  It's overwritten before use.
8757
8758         * metadata.c (mono_type_create_from_typespec_full): Make debugging
8759         checks tighter.
8760         (mono_metadata_parse_generic_param): Likewise.
8761         * loader.c (find_method_in_class): Does not need a
8762         MonoGenericContainer.  Use 'mono_method_signature' rather than
8763         'mono_method_signature_full'.
8764         (find_method, mono_get_method_constrained, method_from_memberref):
8765         Update to changes.
8766
8767         * metadata.c (mono_type_create_from_typespec_full): Ensure that
8768         owner-less generic-parameters are never evicted from the typespec
8769         cache.
8770
8771         * loader.c (method_from_memberref): Don't use the current context
8772         when parsing signatures.
8773         (method_from_methodspec, mono_get_method_from_token): Update to changes.
8774
8775         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
8776         side-effects in g_assert.
8777         * loader.c (mono_get_method_from_token): Resolve klass earlier so
8778         that we don't potentially lose information.
8779
8780 2005-11-26  Dick Porter  <dick@ximian.com>
8781
8782         * icall.c:
8783         * threads.c: icalls to implement basic (ie, not named)
8784         System.Threading.Semaphore.
8785
8786 2005-11-24  Dick Porter  <dick@ximian.com>
8787
8788         * process.c
8789         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
8790         Use GetProcessId() if it's available.
8791
8792 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
8793
8794         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
8795
8796 2005-11-23  Raja R Harinath  <rharinath@novell.com>
8797             Ankit Jain  <jankit@novell.com>
8798
8799         * loader.c (mono_get_method_from_token): Initialize 'method' field
8800         of all generic parameters before parsing the signature.  Remove
8801         code that "fixed"-up MVAR references.
8802
8803 2005-11-23  Ankit Jain  <jankit@novell.com>
8804
8805         * metadata.c (mono_metadata_has_generic_params):
8806         (mono_metadata_load_generic_param_constraints):
8807         (mono_metadata_load_generic_params): Move duplicate code ...
8808         (mono_metadata_get_generic_param_row): ... here. Returns the
8809         first row-id in GenericParam table for a given owner (token).
8810         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
8811         prototype.
8812
8813 2005-11-23  Raja R Harinath  <rharinath@novell.com>
8814             Ankit Jain  <jankit@novell.com>
8815
8816         * metadata.c (mono_metadata_class_equal): Pass signature_only when
8817         comparing VARs too.
8818         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
8819         type->data.generic_param only if the type is an MVAR.
8820         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
8821         leak owner-less VARs and MVARs into managed space.
8822
8823 2005-11-21  Martin Baulig  <martin@ximian.com>
8824
8825         * class-internals.h
8826         (MonoMethod): Moved the `generic_container' here from
8827         `MonoMethodNormal' since we now also need it for
8828         `MonoMethodPInvoke';
8829         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
8830         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
8831         an union containing both `MonoMethodNormal' and
8832         `MonoMethodPInvoke'.
8833
8834         * loader.c
8835         (mono_get_method_from_token): Allow implementing generic methods
8836         as interncalls.
8837
8838         * threads.c
8839         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
8840         icall.
8841
8842 2005-11-17  Dick Porter  <dick@ximian.com>
8843
8844         * icall.c: 
8845         * process.h: 
8846         * process.c: Split the Process Start_internal icall into
8847         ShellExecuteEx_internal and CreateProcess_internal, which are
8848         called depending on whether UseShellExecute is true.  Fixes bug
8849         76670.
8850
8851         * appdomain.c (MONO_CORLIB_VERSION): Incremented
8852
8853 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
8854
8855         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
8856         'msize' parameters, use the information in 'mspec' instead.
8857         (emit_object_to_ptr_conv): Ditto.
8858
8859         * marshal.c (emit_struct_conv): Handle explicit layout structs with
8860         fields out of order. Fixes #76733.
8861
8862 2005-11-17  Ankit Jain  <jankit@novell.com>
8863
8864         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
8865
8866 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
8867
8868         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
8869           bug #76575.
8870
8871 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
8872
8873         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
8874         for types with non-auto layout. Fixes #76717.
8875
8876 2005-11-16  Ankit Jain  <jankit@novell.com>
8877
8878         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
8879         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
8880         if generic_context is null.
8881           (mono_metadata_generic_param_equal): param->owner can be null.
8882           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
8883         null.
8884
8885 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
8888         the correct value.
8889
8890 2005-11-15  Martin Baulig  <martin@ximian.com>
8891
8892         * object.c (set_value): Use mono_class_from_mono_type() instead of
8893         the hack for generic instances; fixes #76136.
8894
8895 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
8896
8897         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
8898         fields.
8899
8900         * image.c (load_metadata_ptrs): Initialize the new fields.
8901
8902         * reflection.c (create_dynamic_mono_image): Ditto.
8903
8904         * reflection.c (build_compressed_metadata): Use the new fields.
8905
8906         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
8907         icall.
8908
8909         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
8910         icall.
8911         
8912 2005-11-15  Ankit Jain  <jankit@novell.com>
8913             Raja R Harinath  <harinath@gmail.com>
8914
8915         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
8916         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
8917         new per-generic_container cache if the cached MonoType's context matches
8918         the current context.
8919           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
8920         to the expected context.
8921           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
8922
8923 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
8924
8925         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
8926         we changed the signature of an icall.
8927         * icall.c: Modify to mono_double_ParseImpl return true/false 
8928         depending on the success, instead of throwing the exception. This will
8929         help us in Double.TryParse methods.
8930         
8931 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * marshal.c (emit_marshal_object): Throw an exception when
8934         marshalling 'object' instead of crashing. Fixes #76696.
8935
8936 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
8937
8938         * class-internals.h: Add prototype for mono_type_get_full_name ().
8939
8940 2005-11-11  Dick Porter  <dick@ximian.com>
8941
8942         * threads.c (mono_thread_manage): Make sure the main thread has
8943         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
8944
8945 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
8946
8947         * loader.c (mono_loader_set_error_type_load): Log a warning to the
8948         console about the missing type.
8949         (mono_loader_set_error_method_load): Ditto.
8950
8951 2005-11-09  Miguel de Icaza  <miguel@novell.com>
8952
8953         * mono-config.c (mono_get_config_dir): Set the system defaults if
8954         none is specified.
8955
8956         * assembly.c (mono_set_dirs): New API entry point to set the
8957         assembly and the config directory in one call
8958
8959 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
8960
8961         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
8962         the ftnptr was created from a delegate in a domain other than the
8963         current domain. Fixes #75377.
8964
8965         * exception.h exception.c: Add mono_get_exception_not_supported ().
8966
8967 2005-11-08  Martin Baulig  <martin@ximian.com>
8968
8969         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
8970
8971 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
8972
8973         * security-manager.h: Added definitions to deal with strongname key 
8974         pairs bigger (and smaller) than 1024 bits.
8975         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
8976         adjust wrt the public key length being used.
8977
8978 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8979
8980         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
8981           Windows build (r51396-51397).
8982
8983 2005-11-03  Martin Baulig  <martin@ximian.com>
8984
8985         * class.c (mono_class_setup_vtable_general): Also add generic
8986         methods to the vtable; fixes #76581.
8987
8988 2005-11-01  Miguel de Icaza  <miguel@novell.com>
8989
8990         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
8991         sure that we lookup GetString method from the System.Text.Encoding
8992         class, not the derived class or we get an empty method.
8993
8994         Fixed class #76612.
8995
8996 2005-10-25  Miguel de Icaza  <miguel@novell.com>
8997
8998         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
8999         if it has been previously set (embedders). 
9000
9001         Make mono_set_rootdir available also on Unix.
9002
9003 005-10-24  Robert Jordan  <robertj@gmx.net>
9004
9005         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
9006
9007 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
9008
9009         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
9010         only calls which are made to native code use this flag.
9011
9012         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
9013
9014 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
9015
9016         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
9017         Add support for FieldBuilders.
9018
9019 2005-10-29  Martin Baulig  <martin@ximian.com>
9020
9021         * mono-debug.c
9022         (mono_debug_using_mono_debugger): New public method; returns
9023         whether we're running inside the debugger.
9024
9025 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
9026
9027         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
9028         for Method/Constructor/FieldBuilders.
9029
9030 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
9031
9032         * reflection.c (module_add_cattrs): Save custom attributes for global methods
9033         and fields as well.
9034
9035 2005-10-26  Martin Baulig  <martin@ximian.com>
9036
9037         * mono-debug-debugger.c
9038         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
9039
9040 2005-10-24  Raja R Harinath  <harinath@gmail.com>
9041
9042         * icall.c (base64_to_byte_array): Don't pass an out-of-range
9043         integer to isspace.
9044
9045 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
9046
9047         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
9048         when passing valuetypes byref. Fixes #76502.
9049
9050 2005-10-19  Jackson Harper  <jackson@ximian.com>
9051
9052         * profiler.c: Don't put a . in front of types that are not in a
9053         namespace.
9054
9055 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
9058
9059 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
9060
9061         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
9062         #76436.
9063         (mono_marshal_get_ldflda_wrapper): Fix a warning.
9064
9065 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9066
9067         * assembly.c metadata-internals.h icall.c: Define an additional
9068         parameter for mono_assembly_name_parse_full, so we can avoid creating
9069         S.R.AssemblyName.Version when no version info wasn't passed.
9070         
9071 2005-10-09  Miguel de Icaza  <miguel@novell.com>
9072
9073         * class.c (mono_type_get_full_name): Reimplement method that was
9074         removed. 
9075
9076         * image.c: Some docs
9077
9078 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
9079
9080         * profiler.c (output_newobj_profile): Fix printing of Total memory
9081         on x86.
9082
9083 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
9084
9085         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
9086
9087 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
9088
9089         * threads.c: remove debug output.
9090
9091 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
9092
9093         * threads.c (mono_thread_manage): Fix crashes if more than 64
9094         threads need to be aborted. Hopefully fixes #75899.
9095
9096         * assembly.c (mono_stringify_assembly_name): New helper function.
9097
9098         * class.c: Use mono_stringify_assembly_name instead of the similar
9099         static function.
9100
9101         * assembly.h assembly.c: Add support for calling a postload search 
9102         hook if an assembly cannot be loaded.
9103
9104         * appdomain.c: Register new search hooks which call the AssemblyResolve
9105         events in AppDomain. Fixes #75231
9106
9107 2005-10-07  Martin Baulig  <martin@ximian.com>
9108
9109         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
9110         methods without debug info.
9111
9112 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
9113
9114         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
9115         wrappers.
9116
9117 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9118
9119         * file-io.c: now that we return symlinks, use lstat and, when the file
9120         is a symbolic link, stat, to get the file attributes. Also avoid the
9121         conversion to/from utf16/external.
9122
9123 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
9124
9125         * class.c (mono_class_layout_fields): Compute klass->has_references
9126         correctly if an embedded valuetype is not yet initialized. Fixes
9127         #76331.
9128
9129 2005-10-04  Martin Baulig  <martin@ximian.com>
9130
9131         * metadata.c
9132         (mono_metadata_load_generic_param_constraints): New public
9133         function; splitted the constraints loading out from
9134         mono_metadata_load_generic_params().
9135
9136         * class.c (mono_class_create_from_typedef): Call
9137         mono_metadata_load_generic_param_constraints() after setting up
9138         the type and creating our parent; fixes #75329.
9139
9140 2005-10-04  Martin Baulig  <martin@ximian.com>
9141
9142         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
9143         non-dynamic parent classes.
9144
9145 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
9146
9147         * file-io.c : win32 build fix (ETXTBSY seems not found).
9148
9149 2005-10-04  Martin Baulig  <martin@ximian.com>
9150
9151         * reflection.c
9152         (mono_image_get_methodspec_token): Make the cache actually work;
9153         fixes #75974.
9154
9155 2005-10-04  Martin Baulig  <martin@ximian.com>
9156
9157         * class.c (mono_class_name_from_token): Removed the unneccessary
9158         `MonoGenericContext *' argument.
9159
9160 2005-10-04  Martin Baulig  <martin@ximian.com>
9161
9162         * loader.c
9163         (method_from_methodspec): Make the caching work again; fixes the
9164         performance regression from #76262.
9165
9166 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9167
9168         * file-io.c:
9169         * file-io.h:
9170         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
9171         GetFileSystemEntries that performs the same work but without going
9172         into io-layer, locking, etc.
9173
9174 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
9175
9176         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
9177         ThreadState_Stopped as well. Fixes #76047.
9178
9179 2005-09-29  Martin Baulig  <martin@ximian.com>
9180
9181         * class.c
9182         (inflate_generic_context): If the new context has a `gmethod', set
9183         its `container' that that gmethod's `container'.
9184
9185         * metadata.c
9186         (mono_metadata_parse_generic_param): Simplify things;
9187         `generic_container = generic_context->container;' is just fine.
9188
9189         * loader.c (method_from_methodspec): Code cleanups.
9190
9191 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
9192
9193         * decimal.c: fix warning (and let gcc generate correct
9194         code on ARM with optimizations).
9195
9196 2005-09-28  Martin Baulig  <martin@ximian.com>
9197
9198         * loader.c
9199         (method_from_memberref): Added `MonoGenericContext *class_context'
9200         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
9201         (method_from_methodspec): If we're a memberref, use the enclosing
9202         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
9203
9204 2005-09-28  Martin Baulig  <martin@ximian.com>
9205
9206         * object.c (mono_runtime_invoke_array): Added support for
9207         MONO_TYPE_GENERICINST; fixes #75917.
9208
9209 2005-09-27  Martin Baulig  <martin@ximian.com>
9210
9211         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
9212         `k->byval_arg.type' to determine the actual type.
9213
9214         * loader.c (method_from_methodspec): Removed some hacks.
9215
9216 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
9217
9218         * class-internals.h (mono_field_is_deleted): Do the test for
9219         rtspecialname before we check the actual name of the field. This
9220         prevents us from dereferencing a pointer into the string table,
9221         saving us from accessing a few pages
9222
9223         * *.c: Replace the use of {Enter,Leave}CriticalSection with
9224         macros. This will allow a deadlock debugger to easily be plugged
9225         in.
9226
9227 2005-09-27  Martin Baulig  <martin@ximian.com>
9228
9229         * loader.c (method_from_methodspec): Create a "signature"
9230         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
9231
9232 2005-09-27  Martin Baulig  <martin@ximian.com>
9233
9234         * class.c
9235         (inflate_generic_class): Correctly set the new context's
9236         container.
9237
9238         * loader.c
9239         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
9240         instead of a `MonoGenericContext *'.
9241         (mono_method_signature_full): Take a `MonoGenericContainer *'
9242         instead of a `MonoGenericContext *'.
9243
9244         * metadata.c
9245         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
9246         instead of a `MonoGenericContext *'.
9247         (mono_metadata_parse_method_signature_full): Likewise.
9248
9249 2005-09-26  Martin Baulig  <martin@ximian.com>
9250
9251         * class.c
9252         (mono_class_from_generic_parameter): Set `klass->generic_container'
9253         (mono_class_from_generic_parameter): Likewise.
9254         (mono_bounded_array_class_get): We inherit the generic container
9255         from the element class.
9256
9257         * loader.c
9258         (find_method, find_method_in_class): Take a `MonoGenericContext *'
9259         argument rather than computing it here.
9260         (method_from_memberref): Correctly set the generic context before
9261         parsing the signature.  Fixes #75681.
9262
9263 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
9264
9265         * object.c (mono_class_has_special_static_fields): Fix warnings.
9266
9267 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9268
9269         * assembly.c: Add parse_public_key function, to
9270         par the public keys. Also added mono_assembly_name_parse_full,
9271         to define it the parsed key should be freed or not.
9272         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
9273         to parse a long format assembly name.
9274         * metadata-internals.h: Keep mono_assembly_name_parse_full as
9275         private, since calling it to preserve the key requires
9276         freeing it manually.
9277         
9278 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
9279
9280         * locales.c : removed HAVE_ICU part.
9281
9282 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
9283
9284         * object.c (mono_class_create_runtime_vtable): Avoid calling 
9285         field_is_special_static if the klass has no special static fields.
9286
9287         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
9288         (MonoCachedClassInfo): Likewise.
9289
9290         * object.c (mono_class_has_special_static_fields): New helper function.
9291
9292 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
9293
9294         * class.c (mono_class_create_from_typedef): Don't call 
9295         interfaces_from_typedef_full for enums.
9296         (mono_class_create_from_typedef): Compute the base types of enums directly
9297         without calling mono_class_setup_fields ().
9298         (mono_class_find_enum_basetype): New helper function.
9299
9300         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
9301         one place inside the string heap.
9302         
9303 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
9304
9305         * class.c: locking fixes, code cleanups, some docs added.
9306         Allocate some data structures in the image mempool.
9307
9308 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
9309
9310         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
9311         the example code.
9312         
9313 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
9314
9315         * class-internals.h, class.c, reflection.c: reduce memory taken by
9316         MonoClass.
9317
9318 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
9319
9320         * metadata.c, metadata.h, loader.h: documentation updates, code and
9321         API cleanups.
9322
9323 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
9324
9325         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
9326         the example code.
9327
9328         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
9329         page faults caused by the runtime while reading metadata.
9330
9331 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9332
9333         * socket-io.c: the field names were changed 3 months ago and no one
9334         realized until bug #76077 got filed!
9335
9336 2005-09-20  Martin Baulig  <martin@ximian.com>
9337
9338         * icall.c (assembly_icalls): Removed some unused debugger icalls.
9339
9340 2005-09-20  Martin Baulig  <martin@ximian.com>
9341
9342         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
9343         write the rank into the class entry.
9344
9345 2005-09-20  Martin Baulig  <martin@ximian.com>
9346
9347         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
9348
9349 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
9350
9351         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9352
9353         * icall.c (custom_attrs_defined_internal): New icall.
9354
9355         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
9356         function.
9357         (mono_custom_attrs_construct_by_type): New helper function.
9358
9359 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
9360
9361         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
9362         terminate the resulting string. Fixes #76123.
9363
9364 2005-09-16  Martin Baulig  <martin@ximian.com>
9365
9366         * mono-debug.c
9367         (mono_debug_add_method): Ignore inflated methods for the moment.
9368
9369 2005-09-14  Martin Baulig  <martin@ximian.com>
9370
9371         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
9372
9373 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
9376         return a success/failure indication.
9377         (mono_metadata_interfaces_from_typedef_full): Ditto.
9378         (get_constraints): Ditto.
9379
9380 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
9381
9382         * marshal.c (emit_marshal_array): Fix handling of null arrays.
9383         
9384         * marshal.c (emit_marshal_array): Add support for returning string
9385         arrays from delegates. Fixes #76063.
9386
9387         * marshal.c: Use the emit_ldloc/stloc macros where possible.
9388
9389 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
9392         icall.
9393
9394 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
9395
9396         * reflection.c icall.c: Fix after mono_get_exception_type_load
9397         signature change.
9398
9399         * assembly.c (mono_assembly_get_assemblyref): New helper function.
9400         (mono_assembly_load_reference): Use the new helper.
9401
9402         * class-internals.h (MonoLoaderError): New structure containing 
9403         information about type loading errors.
9404
9405         * class-internals.h loader.c: Add APIs to store per-thread loader
9406         error information.
9407
9408         * loader.c class.c: Set the loader error if needed.
9409
9410         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
9411
9412 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
9413
9414         * decimal.c: fixed to handle the broken ARM fp format.
9415
9416 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
9417
9418         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
9419         broken.
9420
9421 2005-09-06  Martin Baulig  <martin@ximian.com>
9422
9423         * domain.c (supported_runtimes): Added v2.0.50727.
9424
9425 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
9426
9427         * culture-info.h: reduce the size of some structures.
9428
9429 2005-09-05  Martin Baulig  <martin@ximian.com>
9430
9431         Reflect latest API changes in the August CTP.
9432
9433         * icall.c
9434         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
9435         ("MonoType.HasGenericArguments"): Removed.
9436         ("MonoMethod.BindGenericParameters"): Renamed to
9437         "MakeGenericMethod".
9438         ("MethodBuilder.BindGenericParameters"): Renamed to
9439         "MakeGenericMethod".    
9440
9441 2005-09-05  Martin Baulig  <martin@ximian.com>
9442
9443         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
9444
9445 2005-09-05  Martin Baulig  <martin@ximian.com>
9446
9447         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9448
9449         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
9450         generic_container is non-NULL.
9451
9452 2005-09-05  Martin Baulig  <martin@ximian.com>
9453
9454         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9455
9456         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
9457
9458 2005-08-29  Michal Moskal  <malekith@nemerle.org>
9459
9460         * reflection.c (encode_locals,
9461         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
9462         for large generic types.
9463
9464 2005-09-05  Martin Baulig  <martin@ximian.com>
9465
9466         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9467
9468         * class.c (mono_dup_array_type): New public method.
9469         (mono_metadata_signature_deep_dup): New public method.
9470         (dup_type): Correctly duplicate array and function types.
9471
9472 2005-09-05  Martin Baulig  <martin@ximian.com>
9473
9474         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9475
9476         * reflection.c (get_default_param_value_blobs): Handle generic types
9477         and generic methods.
9478
9479 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
9480
9481         * class.c: Fixed error reporting (method/class were inversed) for 
9482         inheritance demands.
9483         * security-manager.c|h: Added the AppDomain when calling the managed
9484         System.Security.SecurityManager.InheritanceDemand method.
9485
9486 2005-09-01  Raja R Harinath  <rharinath@novell.com>
9487
9488         * reflection.c (encode_marshal_blob): 'marshaltype' and
9489         'marshaltyperef' are alternate sources for the custom marshaler
9490         name.
9491
9492 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
9493
9494         * class.c: fix creation of array classes with rank == 1
9495         (patch by Ankit Jain <jankit@novell.com>).
9496
9497 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
9498
9499         * object.c: fix check for creating the bound data for arrays vs
9500         szarrays.
9501
9502 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9503
9504         * object.c: configuration file name is now based on the executable name,
9505         not the image name. Fixes bug #75931.
9506
9507 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
9510         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
9511
9512 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * rand.c: Use wincrypt.h instead of WinCrypt.h.
9515
9516 2005-08-24  Ankit Jain  <jankit@novell.com>
9517             Raja R Harinath  <rharinath@novell.com>
9518
9519         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
9520           called by it recursively.
9521           (mono_class_init): Remove special case in pending_init handling, since it's
9522           superseded by the fix to mono_class_from_typeref.
9523
9524 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
9525
9526         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
9527         BROKEN_THREAD_START stuff.
9528
9529 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
9530
9531         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
9532         trampoline.
9533
9534         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
9535         
9536         * object.c (mono_delegate_ctor): Replace the original function address with
9537         a delegate trampoline.
9538
9539 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
9540
9541         * icall.c: add boolean argument to base64_to_byte_array and 
9542         InternalFromBase64String to control whether a whitespace-only string
9543         is allowed (or should casue a FormatException to be thrown). We need
9544         this as the behavior has changed between MS.NET 1.x and 2.0, and we
9545         to match the MS behaviour in both profiles.
9546         * appdomain.c: Bump corlib version.
9547
9548 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9549
9550         This patch implements a big portion of publisher policy
9551         support, used to bind assembly versions and redirect
9552         one assembly from version A to version B.
9553
9554         * assembly.c:
9555         New GSList loaded_assembly_bindings, for storing the cached
9556         assembly bindings.
9557         (assembly_binding_maps_name): New static function for checking if a 
9558         assembly binding information maps an assembly name.
9559         (mono_assembly_binding_info_free): New function for freeing
9560         assembly binding information resources.
9561         (get_publisher_policy_info): New static function for retrieving 
9562         assembly binding information from a MonoImage.
9563         (compare_versions): New static function for comparing an assembly
9564         binding information data and the version of an assembly name.
9565         (check_policy_versions): New static function for checking if an
9566         assembly binding info mapping an assembly name is valid for it.
9567         (mono_assembly_load_publisher_policy): New static function for
9568         loading the 'policy.major.minor.MyAssembly' image for an assembly
9569         with an assembly name 'aname'.
9570         (mono_assembly_bind_version): New static function for updating
9571         assembly redirection.
9572         (mono_assembly_apply_binding): New static function for applying
9573         assembly binding.
9574         (search_binding_loaded): New static function for searching 
9575         loaded assembly binding infos in the cache domain.
9576         (mono_assembly_load_full): Don't apply assembly binding for
9577         reflection only assemblies.
9578
9579         * metadata-internals.h: Add MonoAssemblyBindingInfo,
9580         which contains information about assembly binding. Also
9581         declare signature for mono_config_parse_publisher_policy ()
9582         function, used to retrieve pub policy info.
9583         
9584         * mono-config.c:
9585         (publisher_policy_start): New static function used to parse publisher 
9586         policy config files.
9587         (publisher_policy_parser): New static MonoParseHandler containing 
9588         the functions used when parsing config files.
9589         (mono_config_parse_publisher_policy): New function for parsing
9590         publisher policy files.
9591         
9592 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
9593
9594         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
9595
9596         * marshal.c (mono_delegate_free_ftnptr): Ditto.
9597
9598         * object.c (mono_get_addr_from_ftnptr): New helper function.
9599
9600         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
9601
9602         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9603
9604 2005-08-19  Dick Porter  <dick@ximian.com>
9605
9606         * threads.c, threads.h, appdomain.c, appdomain.h,
9607         profiler-private.h, monitor.c, object.c, object-internals.h,
9608         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
9609         store the thread ID, so it can hold a 64 bit value if needed.
9610
9611 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
9612
9613         * reflection.c (mono_reflection_create_dynamic_method): Store the
9614         handle class into the method references as well so ldtoken works in
9615         dynamic methods.
9616
9617         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
9618         types.
9619
9620 2005-08-19  Ankit Jain <jankit@novell.com>
9621
9622         Fix #75847.
9623         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
9624           here rather than using the method signature of a arbitrary function
9625           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
9626           two arguments.
9627           Hack done with Harinath.
9628
9629 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9630
9631         * threadpool.c: disable printing stack traces when we get a exception
9632         in a threadpool thread. I need to do more testing to figure out which
9633         cases actually print this. Fixes bug #75828.
9634
9635 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9636
9637         * icall.c: there might be ignored whitespace after the last '='. This
9638         fixes length computation and bug #75840.
9639
9640 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
9641
9642         * assembly.c (mono_assembly_load_full): Consider .exe extension as
9643         well. Fixes #75809.
9644
9645         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
9646         #75784.
9647         
9648         * reflection.c (create_custom_attr_data): Ditto.
9649
9650 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
9651
9652         * locales.c, culture-info.h : removed RegionLCIDMap.
9653         * culture-info-tables.h : regenerated.
9654
9655 2005-08-16  Martin Baulig  <martin@ximian.com>
9656
9657         * class.c (mono_type_get_name_recurse): Small fix.
9658
9659 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
9660
9661         * locales.c : indentation fixie.
9662
9663 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
9664
9665         * object-internals.h,
9666           locales.h,
9667           locales.c,
9668           culture-info.h,
9669           icall.c : added RegionInfo table support.
9670         * culture-info-table.h : regenerated for region support.
9671
9672 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
9673
9674         * reflection.c (resolve_object): handle all kinds of MonoMethod
9675         including generic ones
9676
9677 2005-08-12  Ankit Jain <jankit@novell.com>
9678
9679         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
9680           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
9681
9682 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
9683
9684         * process.c: Don't close a thread handle when it's NULL. This is a
9685         workaround for bug #75733.
9686
9687 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
9688
9689         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
9690
9691 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
9692
9693         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
9694
9695 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9696
9697         * threadpool.c: if a work item in the thread pool has a callback that
9698         catches a exception, don't propagate it after invoking the callback.
9699         Fixes bug #75336.
9700
9701 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
9702
9703         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
9704
9705         * class-internals.h (MonoCachedClassInfo): Add some new fields.
9706
9707         * class.c (mono_class_init): Load field info lazily in the AOT case.    
9708
9709         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
9710
9711 2005-08-03  Ankit Jain  <jankit@novell.com>
9712
9713         Fix #75683.
9714         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
9715           PInvoke calling convention is 0.
9716
9717 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
9718
9719         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
9720         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
9721
9722 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
9723
9724         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
9725         to handle threads not started by the GC (patch by Michael Meeks
9726         <michael.meeks@novell.com>).
9727
9728 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
9729
9730         * reflection.c: Make buffer used in emitting types larger for some
9731         big generic types (patch by Michal Moskal).
9732
9733 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
9734
9735         * mono-debug.c: Fix some (not all) alignment problems.
9736
9737 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9738
9739         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
9740         Invoke mono_image_load_from_data_full passing the refonly
9741         parameter.
9742
9743         * assembly.c
9744         (mono_assembly_open_from_bundle): Add the refonly argument, 
9745         in order to pass it to other methods it calls to.
9746         (do_mono_assembly_open): Add the refonly argument, in order 
9747         to pass it to other methods it calls to.
9748         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
9749         the refonly parameter to it.
9750
9751         * image.c: Add loaded_images_refonly_hash and
9752         loaded_images_refonly_guid_hash to cache the reflection
9753         only loaded images.
9754         (mono_images_init): Initialize the hash tables used for
9755         caching the reflection only images.
9756         (load_modules): Invoke mono_image_open_full passing the refonly
9757         parameter to load the modules the correct way.
9758         (build_guid_table): Add the refonly argument, to re-build the 
9759         correct hash table.
9760         (do_mono_image_open): Added the refonly argument, in order to
9761         define it for the loaded image.
9762         (mono_image_loaded_full): New function, which receives an
9763         additional parameter to look for the image in the refonly or
9764         non-refonly section.
9765         (mono_image_loaded): Updated, using mono_image_loaded_full.
9766         (mono_image_loaded_by_guid_full): The same case that happens
9767         with mono_image_loaded_full.
9768         (mono_image_loaded_by_guid): Likewise.
9769         (register_image): Use the ref_only variable inside MonoImage
9770         to decide in which hash table store the current image.
9771         (mono_image_open_from_data_full): Rename
9772         mono_image_open_from_data to mono_image_open_from_data_full,
9773         adding the refonly argument, to define the ref_only variable 
9774         inside MonoImage.
9775         (mono_image_open_from_data): Return 
9776         mono_image_open_from_data_full.
9777         (mono_image_open_full): Rename mono_image_open to
9778         mono_image_open_full, receiving the new refonly argument,
9779         to pass it to inner methods.
9780         (mono_pe_file_open): Update this function, to open
9781         a MonoImage as a non-refonly image.
9782         (mono_image_close): Use the refonly variable inside
9783         MonoImage to remove the image from the correct caches.
9784
9785         * image.h: Add the signatures of mono_image_open_full,
9786         mono_image_open_from_data_full, mono_image_loaded_full,
9787         mono_image_loaded_by_guid_full.
9788
9789         * metadata-internals.h: Add the ref_only field to 
9790         MonoImage.
9791         
9792 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9793
9794         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
9795         Fix the last behavior, which used to load the assemblies and
9796         extract MonoReflectionAssemblyName information, instead of
9797         extract it from the metadata tables. Needed for Reflection
9798         Only assemblies.
9799         
9800 2005-07-29  Martin Baulig  <martin@ximian.com>
9801
9802         * mono-debug-debugger.c
9803         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
9804         not initialized.
9805
9806         * mono-debug.c
9807         (mono_debug_address_from_il_offset): Check whether we have
9808         debugging support before attempting to take the lock.
9809         (mono_debug_source_location_from_address): Likewise.
9810         (mono_debug_source_location_from_il_offset): Likewise.
9811         (mono_debug_il_offset_from_address): Likewise.
9812         (mono_debug_address_from_il_offset): Likewise.
9813
9814 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
9815
9816         * class.c (mono_class_from_name_case): Add support for dynamic images.
9817         Fixes #75650.
9818
9819         * object.c (mono_class_compute_gc_descriptor): Add a workaround
9820         for #75479.
9821
9822 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
9823         
9824         * reflection.c (mono_method_get_object): Fix warning.
9825
9826 2005-07-28  Martin Baulig  <martin@ximian.com>
9827
9828         * mono-debug.c
9829         (mono_debug_add_wrapper): Also write the wrapper type.
9830
9831 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
9832
9833         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
9834         
9835         * class.c (mono_class_init): Avoid reading nested classes if the AOT
9836         data indicates the class has none.
9837
9838 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
9839
9840         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
9841         loader lock with the debugger lock. Prevents deadlocks for beagle.
9842
9843         Beagle can now run on an smp box for a weekend without any
9844         issues. Woohoo!
9845
9846 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
9847
9848         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
9849         in a module. Fixes #75629.
9850
9851 2005-07-26  Martin Baulig  <martin@ximian.com>
9852
9853         * mono-debug.c (mono_debug_add_wrapper): New static method.
9854         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
9855         interncall or a wrapper.
9856
9857         * mono-debug.h (MonoDebugWrapperData): New public typedef.
9858         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
9859         (MONO_DEBUGGER_VERSION): Bump to 51.
9860
9861         * mono-debug-debugger.c
9862         (mono_debugger_add_type): Removed this empty function.
9863         (mono_debugger_add_method): Likewise.
9864
9865 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
9866
9867         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
9868         before accessing method->slot.
9869
9870 2005-07-21  Jb Evain  <jbevain@gmail.com>
9871
9872         * reflection.c (method_encode_clauses/class): Handle filters clauses.
9873         Fixes #75010.
9874
9875 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
9876
9877         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
9878         #75587.
9879
9880 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
9881
9882         * image.h image.c: Add mono_image_get_guid () API function.
9883
9884 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
9885
9886         There were issues when multiple threads tried to load
9887         assemblies. A deadlock was created between assemblies_mutex and
9888         mono_domain_assemblies_lock. This fixes the issue by making the
9889         assembly ref counting be lock free. See bug 75586.
9890         
9891         * image.c (mono_image_close): The add ref function here was using
9892         Interlocked operations while the unref was using a mutex and a
9893         --. I don't think this was ever a bug that would be exposed in a
9894         non-pendantic way (ie, by an embedder doing a ref on one thread
9895         and an unref on another), but for the sake of correctness, this is
9896         now Interlocked.
9897
9898         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
9899         (mono_assembly_load_reference): Call mono_assembly_addref rather
9900         than touching the refcount ourselves.
9901         (mono_assembly_close): Use InterlockedDecrement to unref the
9902         assembly. Don't acquire the lock unless it is actually needed.
9903
9904 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
9905
9906         * class.c (mono_class_layout_fields): Fix calculation of has_references
9907         for generic types.
9908
9909 2005-07-12  Martin Baulig  <martin@ximian.com>
9910
9911         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9912
9913         * metadata.c
9914         (mono_type_hash): Provide better hashing for generic instances.
9915         (mono_generic_inst_hash): Improve hashing.
9916         (mono_generic_class_hash): Likewise.
9917
9918         * reflection.c (mymono_metadata_type_hash): Improve hashing for
9919         generic instances.
9920
9921 2005-07-12  Martin Baulig  <martin@ximian.com>
9922
9923         * reflection.c (mono_reflection_create_runtime_class): Remove the
9924         hack for generic type definitions and non-`Run' assemblies.
9925         (mono_reflection_bind_generic_parameters): Also use
9926         `klass->wastypebuilder' to check for TypeBuilders.
9927
9928 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
9929
9930         * class.c (mono_class_layout_fields): Fix calculation of has_references
9931         for generic types.
9932
9933         * class.c (inflate_generic_class): Fix a leak.
9934         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
9935         for generic types.
9936
9937 2005-07-11  Martin Baulig  <martin@ximian.com>
9938
9939         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
9940         on error.
9941
9942 2005-07-11  Martin Baulig  <martin@ximian.com>
9943
9944         * loader.c (find_method): Also lookup in
9945         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
9946
9947 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9948
9949         * appdomain.c (mono_domain_unload): Don't free the error message
9950         before passing it to mono_get_exception_...
9951
9952         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
9953         
9954 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
9955
9956         * threads.c: try to better guess an available RT signal (bug #75387).
9957
9958 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9959
9960         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
9961         and CACHE_OBJECT.
9962
9963 2005-07-07  Martin Baulig  <martin@ximian.com>
9964
9965         * class.c (mono_type_get_name_full): Return NULL for
9966         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
9967         fixes #75408.
9968
9969 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9970
9971         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
9972         exit the appdomain as well being aborted.
9973
9974         * threadpool.c: Create all threadpool threads inside the root appdomain, and
9975         change back to the root domain after calling managed code. This enables
9976         appdomains using threadpools to be unloaded.
9977
9978 2005-07-07  Martin Baulig  <martin@ximian.com>
9979
9980         * class-internals.h
9981         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
9982         into `MonoDynamicGenericClass' since we only need it for dynamic
9983         types.
9984
9985         * reflection.c (mono_class_bind_generic_parameters): We don't need
9986         to compute the `parent' here.
9987
9988 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
9989
9990         * culture-info-table.h : regenerated.
9991
9992 2005-07-06  Martin Baulig  <martin@ximian.com>
9993
9994         * icall.c
9995         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
9996
9997         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
9998
9999 2005-07-06  Martin Baulig  <martin@ximian.com>
10000
10001         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
10002         we're doing a signature-only comparision; fixes #74945.
10003
10004 2005-07-06  Martin Baulig  <martin@ximian.com>
10005
10006         * class-internals.h (MonoGenericClass): Moved some things out into
10007         a new `MonoInflatedGenericClass' type.  
10008         (MonoInflatedGenericClass): New type; the `klass' of a
10009         `MonoGenericClass' is now computed lazyly in
10010         mono_get_inflated_generic_class().      
10011
10012         * class.c (mono_get_inflated_generic_class): New public function.
10013         (mono_class_inflate_generic_method): Removed the unused
10014         `MonoClass *' argument.
10015         (setup_generic_vtable): Don't call mono_get_inflated_method() on
10016         all the methods.
10017         (mono_class_create_generic): Make this static and merge it with
10018         mono_class_create_generic_2(); we're now called automatically from
10019         mono_get_inflated_generic_class().
10020
10021         * loader.c (mono_method_signature): Call
10022         mono_get_inflated_method() here.
10023
10024 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
10025
10026         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
10027         type of fields with RVA.
10028
10029         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
10030         for this pseudo class.
10031         (my_mono_class_from_generic_parameter): Likewise.
10032         (mono_class_init): Allow interfaces to have cctors.
10033
10034 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
10035
10036         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
10037         lazily for AOT methods.
10038
10039 2005-07-05  Martin Baulig  <martin@ximian.com>
10040
10041         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
10042         returns FALSE for a successful match, not TRUE.
10043
10044 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
10045
10046         * loader.c (mono_method_get_index): Optimize this a bit.
10047
10048 2005-07-04  Martin Baulig  <martin@ximian.com>
10049
10050         * class.c
10051         (class_compute_field_layout): Move the check for generic type
10052         definitions into mono_class_layout_fields().  Fixes #74684.
10053         (mono_class_from_generic_parameter): Correctly compute
10054         `klass->parent'; fixes #75457.
10055
10056         * reflection.c (register_assembly, register_module): Make sure
10057         `domain->rejobject_hash' is already created.
10058
10059 2005-07-02  Martin Baulig  <martin@ximian.com>
10060
10061         * class-internals.h
10062         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
10063         `MonoDynamicGenericClass'.      
10064
10065 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
10066
10067         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
10068         returned by a field getter is null, since null is a valid value.
10069
10070 2005-07-01  Martin Baulig  <martin@ximian.com>
10071
10072         * reflection.c (mono_reflection_generic_class_initialize): Update
10073         the `dgclass->fields [i].parent' to the correct class.
10074         (mono_image_get_fieldref_token): Use the declaring type, not the
10075         reflected type.
10076
10077 2005-07-01  Martin Baulig  <martin@ximian.com>
10078
10079         * loader.c (find_method): Also look in the interfaces; fixes #75429.
10080
10081 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
10082
10083         * threads.c (thread_cleanup): assert that thread != NULL
10084         (wait_for_tids_or_state_change): We were using the wrong variable
10085         when accessing wait->threads. `i' was always out of the bounds of
10086         the array.
10087
10088 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10089
10090         * loader.c: map user32 and kernel32 to libMonoSupportW
10091
10092 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
10093
10094         * appdomain.c (unload_thread_main): Mark this as WINAPI.
10095
10096 2005-06-28  Martin Baulig  <martin@ximian.com>
10097
10098         * loader.c (method_from_methodspec): Fix #75334.
10099
10100 2005-06-28  Martin Baulig  <martin@ximian.com>
10101
10102         Fix #74953 - Arrays now implement the generic IList<T> interface
10103         on the 2.0 platform.
10104
10105         * class-internals.h (MonoDefaults): Added `generic_array_class'.
10106
10107         * reflection.c (mono_class_bind_generic_parameters): New public
10108         function; similar to mono_reflection_bind_generic_parameters(),
10109         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
10110
10111         * domain.c (mono_init_internal): Try to initialize.
10112         `mono_defaults.generic_array_class' here; this'll only succeed if
10113         we're using the 2.0 corlib.
10114
10115         * icall.c
10116         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
10117         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
10118         (mono_lookup_internal_call): Added support for nested classes.
10119
10120         * loader.c
10121         (mono_get_method_from_token): Set `result->signature->pinvoke' if
10122         we're an interncall and have generic arguments.
10123
10124         * class.c
10125         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
10126         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
10127         instance of System.Array.InternalArray<T> for arrays, so they
10128         implement the generic IList<T> interface.
10129
10130 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
10131
10132         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
10133         (chastamar@yahoo.com). Fixes #75374.    
10134
10135 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
10136
10137         * culture-info-table.h: regenerated.
10138
10139 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10140
10141         * icall.c: handle spaces correctly for base64 strings.
10142
10143 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
10144
10145         * *.c: Kill some warnings.
10146
10147 2005-06-23  Duncan Mak  <duncan@novell.com>
10148
10149         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
10150         that this builds on Solaris 10 (x86).
10151
10152 2005-06-23  Martin Baulig  <martin@ximian.com>
10153
10154         * class.c
10155         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
10156         generic type definitions.
10157
10158 2005-06-23  Martin Baulig  <martin@ximian.com>
10159
10160         Fix #75331.
10161
10162         * metadata.c (mono_class_get_overrides): Renamed to
10163         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
10164         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
10165         pass it to mono_get_method_full().
10166
10167 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
10168
10169         * reflection.c (mono_reflection_create_runtime_class): take the
10170         mono_domain_lock in this method. Prevents deadlocks
10171
10172 2005-06-22  Martin Baulig  <martin@ximian.com>
10173
10174         * loader.c (method_from_methodspec): Fix #75330.
10175
10176 2005-06-22  Martin Baulig  <martin@ximian.com>
10177
10178         * reflection.c (type_get_qualified_name): Use
10179         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
10180         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
10181         argument; use it if we don't have an assembly name.
10182
10183 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
10184
10185         * object.c: In mono_message_init, set "copy out" flag for in
10186         parameters with the [Out] flag.
10187
10188 2005-06-21  Martin Baulig  <martin@ximian.com>
10189
10190         * class.c
10191         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
10192         and MONO_TYPE_PTR.
10193
10194 2005-06-21  Martin Baulig  <martin@ximian.com>
10195
10196         * class.c (mono_class_init): Don't initialize `class->fields' for
10197         generic instances since they're initialized again in
10198         compute_field_layout(). 
10199         (compute_field_layout): Set the field's `generic_info' here; fix
10200         #75320. 
10201
10202 2005-06-21  Martin Baulig  <martin@ximian.com>
10203
10204         * class-internals.h
10205         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
10206
10207         * metadata.c (mono_metadata_generic_method_equal): Also
10208         distinguish the `generic_class'; fixes #75334.
10209
10210 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10211
10212         * domain.c:
10213         * appdomain.c:
10214         * domain-internals.h:
10215         * reflection.c: 'domain_assemblies' field is now protected by its own
10216         lock. Don't call into managed code to run the AssemblyLoad event if we
10217         now there are no registered delegates for it.
10218
10219 2005-06-20  Martin Baulig  <martin@ximian.com>
10220
10221         * class.c (mono_class_is_assignable_from): Use a custom version of
10222         mono_class_has_parent() to make things work for generic instances;
10223         fix #75300.
10224
10225 2005-06-20  Martin Baulig  <martin@ximian.com>
10226
10227         * loader.c (method_from_methodspec): Apply a patch from
10228         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
10229
10230 2005-06-20  Martin Baulig  <martin@ximian.com>
10231
10232         * class.c (mono_class_init): Reverted Zoltan's last change; it
10233         breaks generics.
10234
10235 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
10236
10237         * threads.c (wait_for_tids_or_state_change): Add missing locking.
10238
10239 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10240
10241         * socket-io.c: fix the index in the socket array for writable/error
10242         sockets. Fixes bug #75306.
10243
10244 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
10245
10246         * class.c (mono_class_init): Allow interfaces to have static ctors.
10247
10248 2005-06-17  Martin Baulig  <martin@ximian.com>
10249
10250         * loader.c (method_from_methodspec): Use `context->container' when
10251         parsing the `gmethod->inst'.
10252
10253 2005-06-17  Martin Baulig  <martin@ximian.com>
10254
10255         * class.c (mono_type_get_name_recurse): Don't add the assembly
10256         name for type arguments.
10257
10258 2005-06-15  Martin Baulig  <martin@ximian.com>
10259
10260         * reflection.c (mono_image_get_inflated_method_token): Encode
10261         correct klass; fixes #75260.
10262
10263 2005-06-13 Michal Moskal <malekith@nemerle.org>
10264
10265         * icall.c: Make GetCorrespondingMethod/Constructor take
10266         MonoReflectionMethod method not MonoMethod. Removed
10267         MonoType.GetCorrespondingField, and make
10268         MonoGenericType.GetCorrespondingField take name not
10269         MonoClassField.
10270
10271 2005-06-13  Michal Moskal <malekith@nemerle.org>
10272
10273         * reflection.c (field_encode_signature, encode_locals):
10274          Make sizes of buffers for types larger (for big generic types).
10275          (create_generic_typespec,
10276          mono_reflection_sighelper_get_signature_local,
10277          mono_reflection_sighelper_get_signature_field):
10278          Add asserts for too small buffers.
10279
10280 2005-06-15  Martin Baulig  <martin@ximian.com>
10281
10282         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
10283         if our parent is not a dynamic type.
10284
10285 2005-06-15  Martin Baulig  <martin@ximian.com>
10286
10287         * class-internals.h (MonoTypeNameFormat): New enum.
10288
10289         * class.c
10290         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
10291         (mono_type_get_full_name): Removed.
10292         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
10293         argument instead of the boolean's.
10294
10295         * icall.c (ves_icall_System_MonoType_getFullName):
10296         Added `gboolean assembly_qualified'.    
10297
10298         * reflection.h
10299         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
10300
10301         * reflection.c (mono_reflection_parse_type): Parse the new type
10302         name format.
10303
10304 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10305
10306         * icall.c: no need to convert from utf16 to utf8 and then back again
10307         after the call to GetLogicalDrives.
10308
10309 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10310
10311         * icall.c: frombase64. Fix problems exposed by new tests.
10312
10313 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10314
10315         * icall.c: added internal calls for converting char [] and strings in
10316         base64 into byte [].
10317
10318 2005-06-10  Martin Baulig  <martin@ximian.com>
10319
10320         * class.c (mono_class_create_generic_2): Read the nested classes
10321         from the metadata rather than from `gklass->nested_classes' since
10322         `gklass' might not be initialized yet.
10323
10324 2005-06-09  Duncan Mak  <duncan@novell.com>
10325
10326         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
10327         all public headers. Fixes #74919.
10328
10329 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
10330
10331         * domain.c: The key for proxy_vtable_hash is now a pointer
10332         array. Added new GHashFunc and GCompareFunc functions for this.
10333
10334         * class.h: The list of interfaces in MonoRemoteClass is known in
10335         advance and can't grow (we create a new MonoRemoteClass if needed),
10336         so now the interface array can be allocated together with
10337         MonoRemoteClass.
10338         
10339         * object.c: Added a new method create_remote_class_key.
10340         Fixed mono_remote_class so it does not depend on
10341         mono_upgrade_remote_class.
10342         Removed extend_interface_array.
10343         Added new method clone_remote_class(), which makes a copy of a remote
10344         class and adds a new interface or class to it.
10345         mono_upgrade_remote_class() now creates a new remote class (or gets
10346         it from the cache) if an vtable upgrade is needed. In this way
10347         we make sure that other objects sharing the same remote class
10348         don't get the new vtable with unwanted interfaces.
10349         
10350         * object-internals.h:
10351         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
10352         
10353         * marshal.c: Track changes in mono_upgrade_remote_class().
10354
10355 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
10356         * icall.c: Add runtime methods for obtaining members of inflated
10357         class, which were created from supplied non-inflated members. It
10358         is used in internal Get{Method,Constructor,Field} methods in
10359         System.Type
10360
10361 2005-06-09  Martin Baulig  <martin@ximian.com>
10362
10363         * reflection.c
10364         (mono_reflection_bind_generic_method_parameters): Fix #75169.
10365
10366 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10367         * reflection.c (mono_image_basic_init): Define
10368         Version in MonoDynamicAssembly. 
10369         
10370 2005-06-08  Martin Baulig  <martin@ximian.com>
10371
10372         Fix #75136.
10373
10374         * loader.c
10375         (mono_method_signature_full): New public method; takes a
10376         `MonoGenericContext *'.
10377         (find_method): Use mono_method_signature_full() and pass the
10378         klass'es context to it.
10379
10380         * class.c (mono_class_is_inflated_method): Use
10381         mono_method_signature_full() and pass the context to it.
10382
10383 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
10384
10385         * object.c: add proper locking in mono_remote_class_vtable(),
10386         fixes possible memory corruption.
10387
10388 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
10389
10390         * marshal.c (mono_remoting_marshal_init): set
10391         initialized after initialization.
10392
10393 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
10394
10395         * locales.c : hush.
10396
10397 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
10398
10399         * object.c (extend_interface_array): fix really silly
10400         memory corrupting / comparison bug.
10401
10402 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10403
10404         * reflection.c: Functions added to support the creation
10405         of CustomAttributeData, which includes Attribute data
10406         used by ReflectionOnly methods.
10407
10408         * reflection.h:  mono_reflection_get_custom_attrs_data and
10409          mono_custom_attrs_data_construct added (functions exposed).
10410
10411          * icall.c: Added mono_reflection_get_custom_attrs_data
10412          as icall.
10413         
10414 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
10415
10416         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
10417         lupus's request.
10418
10419 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
10420
10421         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
10422
10423         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
10424         dynamic DllImportAttribute.
10425
10426         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
10427         dynamic DllImportAttribute.
10428
10429         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
10430         Fixes #75162.
10431
10432 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10433
10434         * threads.c: avoid segfault when an unstarted thread is aborted.
10435
10436 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
10437
10438         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
10439         Returns the name and version of the runtime for reporting.
10440
10441 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10442
10443         * appdomain.c: bump corlib version.
10444         * object-internals.h: new field in MonoReflectionAssembly.
10445
10446 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10447
10448         * object-internals.h: Carlos forgot to add this field.
10449
10450 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10451
10452         * icall.c: Added create_version to create instances
10453         of Version of MonoReflectionAssemblyName. This change helps
10454         the AssemblyName tests to keep running fine.
10455         
10456 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
10457   
10458         * object.c (mono_method_return_message_restore): A somehow less
10459         intrusive fix for #75138.
10460
10461 2005-06-03  Raja R Harinath  <rharinath@novell.com>
10462
10463         * object.c (mono_method_return_message_restore): Fix computation
10464         of expected number of out args.
10465
10466 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
10467
10468         * reflection.c (mono_image_get_method_info): Fix the case when the
10469         charset is empty.
10470
10471 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
10472
10473         * object.c: Added missing null check in
10474           mono_method_return_message_restore.
10475
10476 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
10477
10478         * reflection.c (mono_image_get_method_info): Handle the case when
10479         dllentry is empty.
10480
10481 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
10482
10483         * object.c: When creating the vtable for a proxy, take into account
10484         all inherited interfaces, not only the ones registered in
10485         iclass->interfaces. This fixs bug #74996.
10486         Also, in mono_method_return_message_restore, verify that the array
10487         of out args has the expected lengh.
10488
10489 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10490
10491         * socket-io.c: update the timeout in Poll when the call is interrupte.
10492
10493 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10494
10495         * socket-io.c: support abort/suspend in Select_internal after last
10496         change.
10497
10498 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10499
10500         * threadpool.c: remove warning.
10501
10502 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10503
10504         * icall.c:
10505         * socket-io.[ch]: Select_internal uses poll() now when available, thus
10506         removing the 1024 limit from select(). Runtime part of the fix for
10507         bug #71203.
10508
10509 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10510
10511         * socket-io.c: when resolving the addresses for the same
10512         host returned by gethostname(), get the local IPs from the interface
10513         list. Loopback addresses are discarded if the are interfaces up with
10514         non-loopback ones. Fixes bug #63265.
10515
10516 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
10517
10518         * appdomain.c, verify.c, object-internals.h, reflection.c:
10519         bumped corlib number to 36, and added new extra_flags field
10520         to ReflectionMethodBuilder and friends.  Fixes #75060.
10521
10522 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
10523
10524         * gc.c: register a new weak link only if the object is non-null
10525         (fixes bug#75047).
10526
10527 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
10528
10529         * culture-info.h : short time pattern too.
10530
10531 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
10532
10533         * culture-info.h : expand long time pattern string length.
10534
10535 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
10536
10537         * culture-info-table.h : update (more French date format; #72788).
10538
10539 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
10540
10541         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
10542         the method is static. Fixes #75029.
10543
10544 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
10545
10546         * reflection.c: Update the table_idx field of method builders after
10547         saving the module, since it can change. This is a workaround for
10548         bug #74914. 
10549
10550 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
10551
10552         * culture-info-table.h : update (additional French date format).
10553
10554 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
10555
10556         * icall.c (ves_icall_type_Equals): Revert last change.
10557         
10558         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
10559
10560         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
10561
10562 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
10563
10564         * class-internals.h: Added executioncontext_class field to 
10565         MonoDefaults structure.
10566         * domain.c: Cache System.Threading.ExecutionContext class in 
10567         mono_defaults.
10568         * object.c: Capture the ExecutionContext for asynchroneous calls in
10569          mono_async_result_new.
10570         * object-internals.h: Added execution_context and original_context 
10571         fields to MonoAsyncResult. Added execution_context to MonoThread.
10572         * security-manager.c|.h: Added mono_get_context_capture_method to 
10573         return the capture method (if required by the security manager or by
10574         the framework version used).
10575         * threadpool.c: Apply capture (if present) ExecutionContext in 
10576         mono_async_invoke and revert to original context after it completes.
10577
10578 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
10579
10580         * culture-info-table.h : updated (real hacky solution for zh-CHT).
10581
10582 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
10583
10584         * culture-info-table.h : zh-CHT related workaround.
10585
10586 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
10587
10588         * marshal.c (emit_marshal_custom): Add some error checking and call the
10589         methods in the ICustomMarshaler interface. Fixes #74875.
10590         
10591         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
10592         native->managed wrappers.
10593
10594 2005-05-12  Martin Baulig  <martin@ximian.com>
10595
10596         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
10597         here and use the loader lock.
10598
10599         * mono-debug.c: Properly lock when the debugger is not attached.
10600         (mono_debug_init): Release the initial lock if we're not running
10601         in the debugger.
10602
10603 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
10604
10605         * marshal.c (emit_marshal_custom): Pass through NULL values without
10606         calling the custom marshalling routines.
10607
10608         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
10609         conversion in structures. Fixes #74882.
10610
10611 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
10612
10613         * culture-info-table.h : zh-* cultures were missing.
10614
10615 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
10616
10617         * threads.c: Added a new event background_change_event which is signaled
10618         when a thread changes its background mode.
10619         Moved here several checks previously done in managed code. The checks
10620         require the thread lock, and using the thread lock in managed code
10621         can result in deadlocks.
10622         Merged Start_internal and Thread_internal into a single method. Now 
10623         Thread_internal does all work of creating and starting a thread.
10624         Added icalls for setting and getting the state of the object. Moved from
10625         managed code to avoid locking there.
10626         Added wait_for_tids_or_state_change() which is called instad of
10627         wait_for_tids when waiting for non-backround threads to end. This method
10628         will return if one of the threads ends or the background_change_event
10629         is signaled.
10630         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
10631         the background mode. This method signals the background_change_event
10632         event.
10633         * icall.c:
10634         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
10635         removed Start_internal.
10636         
10637 2005-05-11  Martin Baulig  <martin@ximian.com>
10638
10639         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
10640         to order of some fields to get proper alignment on 64-bit machines.
10641
10642 2005-05-11  Martin Baulig  <martin@ximian.com>
10643
10644         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
10645         changes as they're broken and completely fuck up the debugger.
10646
10647         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
10648
10649 2005-05-10  Martin Baulig  <martin@ximian.com>
10650
10651         * reflection.c (mono_reflection_generic_class_initialize): Don't
10652         call mono_class_setup_parent() here.
10653
10654 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10655
10656         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
10657         send/receive timeout use an integer in milliseconds. We were using a
10658         struct timeval.
10659
10660 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10661
10662         * locales.c:
10663         (internal_get_cultures): reserve the first slot of the array for the
10664         InvariantCulture, which will be filled in managed code.
10665
10666 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
10667
10668         * reflection.c (mono_image_fill_module_table): Initialize the
10669         GENERATION field as well.
10670
10671 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10672
10673         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
10674         Monitor.Enter on the object.
10675
10676 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
10677
10678         * threads.c: Enable the wait for running threads when exiting.
10679         * icall.c: Suspend all threads before exiting.
10680
10681 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
10682
10683         * assembly.c (mono_assembly_load_reference): Fix warning.
10684
10685 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10686
10687         * threadpool.c: changed the default number of threads per cpu. From now
10688         on, the default will be 20 + (5 * number of cpus) instead of 50.
10689
10690 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
10691
10692         * loader.c (mono_method_get_signature_full): Add locking here.
10693
10694 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
10695
10696         * appdomain.c: Moved methods for parsing and freeing assembly
10697         names to assembly.c.
10698         * assembly.c, domain-internals.h: Created public methods for parsing
10699         assembly names. Fixed mono_assembly_load_with_partial_name:
10700         it now finds the best match, taking into account the version,
10701         token and culture specified in the partial name. Also return
10702         the latest version if no version information is specified.
10703
10704 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
10705
10706         * threadpool.c: replace check for SocketAsyncCall class.
10707
10708 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10709
10710         * threadpool-internals.h:
10711         * Makefile.am: added threadpool-internals.h
10712
10713         * threadpool.c: call mono_unhandled_exception on exceptions not handled
10714         that happen in threadpool threads (tested on MS).
10715         (mono_thread_pool_remove_socket): new function that dispatch any pending
10716         AIO call on a socket that is closing. By now only epoll really needs it,
10717         as select/poll wake up when the socket closes.
10718
10719
10720         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
10721
10722 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
10723
10724         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
10725
10726 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
10727
10728         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
10729
10730 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
10731
10732         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
10733         has an abort request, convert it into a suspend request.
10734
10735 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
10736
10737         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
10738         warning for the usage of `UnmanagedFunctionPointerAttribute' which
10739         is not supported yet.
10740
10741 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10742
10743         * image.c: register assemblies loaded from data (bundles) in the loaded
10744         assemblies hash. Fixes bug #74772.
10745
10746 2005-04-29  Martin Baulig  <martin@ximian.com>
10747
10748         * class.c (mono_type_get_name_recurse): Update to the new naming
10749         schema from the latest .NET 2.x beta2.
10750         (mono_class_setup_vtable_general): If we're a generic instance,
10751         copy the vtable from our generic type definition and inflate all
10752         the methods in it.
10753
10754         * loader.c (find_method): Update to the new naming schema from the
10755         latest .NET 2.x beta2.
10756
10757 2005-04-29  Raja R Harinath  <harinath@gmail.com>
10758
10759         * class.c (mono_class_init): Add a mono_loader_unlock to the
10760         #74734 fix.
10761
10762 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
10763
10764         * icall.c (ves_icall_System_Environment_Exit): Remove the 
10765         suspend_all_other_threads () call for the time being, since it can hang.
10766
10767         * threads.c (mono_thread_manage): Similarly, disable the waiting for
10768         the background threads to exit, since it can also hang.
10769
10770         * class.c (mono_class_init): Applied patch from Ankit Jain 
10771         (radical@gmail.com). Avoid pending init errors when a field refers
10772         to a nested class using a typeref. Fixes #74734.
10773
10774         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
10775         this for dynamic modules.
10776
10777 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10778
10779         * threads.c: don't wait for threads that are in the process of aborting
10780         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
10781         and waiting for background threads to finish. This makes xsp and
10782         mod-mono-server exit without random length delays and/or hangs.
10783
10784 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10785
10786         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
10787
10788 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
10789
10790         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
10791         dynamic types to prevent infinite loops. Fixes #74727.
10792
10793         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
10794         ..._is_assignable_to.
10795
10796 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
10797
10798         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
10799
10800 2005-04-25  Martin Baulig  <martin@ximian.com>
10801
10802         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
10803
10804         * domain.c
10805         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
10806
10807         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
10808
10809         * reflection.c (build_compressed_metadata): Set metadata header
10810         version to 2.0.
10811
10812 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
10813
10814         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
10815         number into an integral and a decimal part. Fixes #70473.
10816
10817         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
10818
10819 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
10820
10821         * culture-info-table.h : reflected the latest locale-builder output.
10822
10823 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10824
10825         * threadpool.c: check for SuspendRequested too when deciding if
10826         mono_thread_interruption_checkpoint should be called.
10827
10828 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10829
10830         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
10831         * threads.c: remove interruption_mutex and use Interlocked instead. When
10832         suspending all the threads, wait for all the suspended events at once.
10833         If we're shutting down and get an APC that is going to be queued,
10834         call mono_thread_execute_interruption immediately, as the thread might
10835         be sleeping on a pthread condition or mutex.
10836
10837         * icall.c: call mono_runtime_set_shutting_down before suspending the
10838         threads.
10839
10840         Fixes bug #74693. And now xsp is happier when exiting.
10841
10842 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
10843
10844         * loader.c (mono_stack_walk): Fix #74690.
10845
10846 2005-04-22  Martin Baulig  <martin@ximian.com>
10847
10848         * mono-debug.h (MonoDebugMethodJitInfo): Added
10849         `MonoDebugMethodJitInfo *jit'.
10850
10851         * mono-debug.c (mono_debug_read_method): Cache the
10852         MonoDebugMethodJitInfo in `address->jit'.
10853         (mono_debug_free_method_jit_info): New public method.
10854
10855 2005-04-22  Martin Baulig  <martin@ximian.com>
10856
10857         * class.c (mono_class_is_assignable_from): Disallow
10858         type parameter -> interface.
10859
10860 2005-04-21  Dick Porter  <dick@ximian.com>
10861
10862         * threads.c (mono_thread_create): Turn an assertion into an error.
10863
10864 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
10865
10866         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
10867         
10868         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
10869         Fix some gcc 4.0 warnings.
10870
10871 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
10872
10873         * file-io.c: fix alt dir separator char on unix systems
10874         and cleanup (fixes bug #71214).
10875
10876 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
10877
10878         * marshal.c: Use CALLVIRT instead of CALL when dispatching
10879         a call to a remote domain, since the method may be an
10880         interface method in the client domain. This fixes bug #74192.
10881
10882 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10883
10884         * threadpool.c: recv/send are now performed before going back to managed
10885         code to save one transition.
10886
10887 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10888
10889         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
10890
10891         * metadata/threadpool.c: removed hack to workaround the bug above.
10892
10893         Fixes bug #74618.
10894
10895 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
10896
10897         * reflection.c reflection.h: Fix handling of parameter defaults in
10898         dynamic methods. Also fixes handling of parameter attributes.
10899         Fixes #74609.
10900
10901         * mono-debug.c (mono_debug_close_image): Fix warning.
10902
10903 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10904
10905         * socket-io.h: replaced old unused field with new 'blocking'.
10906         * threadpool.c: restore socket blocking state on windows(tm).
10907
10908 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
10909
10910         * icall.c: don't return the codebase in the AssemblyName[] returned by
10911         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
10912         * object-internals.h: Removed FIXME (fields were presents) and fixed
10913         versioncompat declaration.
10914
10915 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10916
10917         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
10918         not closed, so don't cleanup when it happens.
10919
10920 2005-04-13  Chris Toshok  <toshok@ximian.com>
10921
10922         * mono-debug-debugger.h: change prototype for
10923         mono_debugger_lookup_type.
10924
10925         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
10926         this function, although it should probably be named
10927         mono_debugger_init_type.
10928
10929 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10930
10931         * threadpool.c: fix non-AIO case.
10932
10933 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
10934
10935         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
10936         the built-in profiler to measure just JIT compilation times.
10937
10938 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10939
10940         * threadpool.c: the epollfd might be closed by another thread at
10941         any time, so ignore EBADF at treat it as a "we're closing" sign.
10942
10943 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10944
10945         * threadpool.c: release the semaphores with a count equals to the number
10946         of working threads in both IO and regular pools. Fixed typo that messed
10947         up the count of IO pool threads. Don't initialize the pipe handles if
10948         we're using epoll.
10949
10950 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10951
10952         * threadpool.c: some systems don't like a NULL when deleting the socket
10953         from epoll.
10954
10955 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10956
10957         * threadpool.c: fix semaphore allocation.
10958
10959 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10960
10961         * threadpool.c: added epoll() based implementation for asynchronous IO
10962         that is used instead of the default poll() when available.
10963         It can be disabled by setting MONO_DISABLE_AIO.
10964
10965 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10966
10967         * threadpool.c: windows needs 'closesocket' and instead of returning
10968         0 when the stream is closed while in select, it returns -1. Fixes bug
10969         #74573.
10970
10971 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
10972
10973         * class.c (class_compute_field_layout): Fix the regression caused by
10974         the previous try.
10975
10976 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10977
10978         * threadpool.c: separate pool for socket async. IO.
10979         * threadpool.h: mono_max_worker_threads is not a global any more.
10980
10981 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
10982
10983         * class.c (class_compute_field_layout): Fix #74549.
10984
10985 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10986
10987         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
10988         use 2 connected sockets instead.
10989
10990 2005-04-08  Miguel de Icaza  <miguel@novell.com>
10991
10992         * mono-config.c: Add new entry point for mkbundle
10993         mono_config_parse_memory. 
10994
10995 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10996
10997         * threadpool.c: removed another unused function.
10998
10999 2005-04-08  Ankit Jain  <radical@corewars.org>
11000
11001         * reflection.c (get_default_param_value_blobs): Add 'types'
11002         parameter to get the types encoded in the constant table.
11003         (mono_param_get_objects): Use the type from the constant table,
11004         not the type of the parameter, when creating default values.
11005         Handle null default values correctly.
11006
11007 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11008
11009         * file-io.c:
11010         * file-io.h:
11011         * threadpool.c:
11012         * threadpool.h:
11013         * icall.c:
11014         * socket-io.c: removed dead code for async IO.
11015
11016 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11017
11018         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
11019
11020         * threadpool.c: intercept socket async. calls and pass them to a thread
11021         that is polling and dispatching the job items to the threadpool as
11022         socket become ready. Fixes bugs #71217, #71933.
11023
11024         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
11025         between char and short/ushort arrays.
11026
11027         * socket-io.c: remove dead code.
11028
11029 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
11030
11031         * locales.c,
11032           icall.c : removed InternalToUpper_Comp() and
11033           InternalToLower_Comp().
11034
11035 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
11036
11037         * char-conversions.h : The tables were incorrectly generated. Should
11038           be generated against invariant culture.
11039
11040 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
11041
11042         * object.c (mono_runtime_invoke_array): Fix return value when 
11043         passing pre-created valuetype objects to ctors.
11044
11045         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
11046         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
11047         Fixes #74338.
11048
11049 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
11050
11051         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
11052         only used with --security and hides the wrong corlib version error.
11053
11054 2005-03-30  Joshua Tauberer  <tauberer@for.net>
11055
11056         * class.c: Changed mono_class_name_from_token so that types
11057         outside of a namespace don't have an initial period.  Improved
11058         the g_warning message used in _mono_class_get when loading
11059         fails.
11060         * assembly.c: In mono_assembly_load_reference, when an assembly
11061         can't be found, "No such file or directory" is misleading and
11062         unhelpful because a few paths were checked for the presence of
11063         the assembly.  When that happens (ENOENT), display a nicer
11064         message indicating the directories that were searched.  In all
11065         cases, the warning is made easier to read for non-hackers.
11066
11067 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
11068
11069         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
11070         project/solution.
11071         * appdomain.h|domain.c: Removed inline from functions.
11072         * appdomain.c: Reduced warnings when compiling on windows.
11073         * icall.c: Fixed output_debug declaration to gunichar2*.
11074         * mono-config.c: Reduced warnings when compiling on windows.
11075         * rand.c: Added missing "windows.h". Added missing return value.
11076         * rawbuffer.c: Added missing winsock2.h for windows.
11077         * sysmath.h: Added mono-compiler.h header to allow/ease 
11078         compilation with non-GCC compilers.
11079         * threads.c: Fixed declarations to compile with VS.NET C compiler.
11080         Removed cast warnings.
11081
11082         Adapted from the work of J Lothian (for VC6).
11083
11084 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
11085
11086         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
11087         from default_path.
11088
11089 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
11090
11091         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
11092         the 2.0 profile.
11093
11094 2005-03-27  Raja R Harinath  <harinath@gmail.com>
11095
11096         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
11097         has to be in $(exec_prefix).  $(prefix) is for arch-independent
11098         stuff, and it would probably use $(prefix)/share rather than
11099         $(prefix)/lib.
11100
11101 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11102
11103         * console-io.c: added 2 includes that might be missing.
11104
11105 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
11106
11107         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
11108         profile.
11109
11110         * reflection.c (create_custom_attr): Allocate the params array using
11111         alloca so it gets GC tracking.
11112
11113 2005-03-23  Chris Toshok  <toshok@ximian.com>
11114
11115         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
11116         out some spew.
11117
11118 2005-03-24  Raja R Harinath  <rharinath@novell.com>
11119
11120         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
11121         changes to pick up any changes in prefix, etc.
11122
11123 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
11124
11125         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
11126         
11127         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
11128         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
11129
11130 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
11131
11132         * class-internals.h object-internals.h class.c reflection.c: Extend the
11133         mono_lookup_dynamic_token () function to return the class of the
11134         token as well. 
11135
11136         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
11137         well. Fixes #73848.
11138
11139 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
11140
11141         * security-manager.c: Skip inheritance checks for intra-corlib
11142         class inheritance and method overrides. This skips a lot of checks
11143         and (anyway) permissions cannot work until corlib is loaded.
11144
11145 2005-03-23  Martin Baulig  <martin@ximian.com>
11146
11147         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
11148         MONO_TYPE_GENERICINST.  
11149
11150 2005-03-23  Martin Baulig  <martin@ximian.com>
11151
11152         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
11153
11154 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11155
11156         * class.c: added locking comments to some functions.
11157         Cache the interface offsets arrays (saves about 20 KB
11158         of runtime memory in a typical app).
11159         Reduce the time overhead in mono_class_setup_supertypes ().
11160
11161 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
11162
11163         * icall.c: speedup and fix leaks in GetMethodsByName and
11164         GetPropertiesByName.
11165
11166 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11167
11168         * reflection.c: some locking fixes.
11169
11170 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
11171
11172         * metadata.c: added missing break in case statement.
11173
11174 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
11175
11176         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
11177         typedbyref return values. Fixes #73941.
11178
11179 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
11180
11181         * security-manager.c|h: Added demandunmanaged method and 
11182         suppressunmanagedcodesecurity class to MonoSecurityManager.
11183         Renamed aptc class to allowpartiallytrustedcallers.
11184
11185 2005-03-17  Martin Baulig  <martin@ximian.com>
11186
11187         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
11188
11189 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11190
11191         * file-io.c: disabled file async. IO using aio_*. It uses the
11192         threadpool now. Workaround for bug #73718.
11193
11194 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11195
11196         * assembly.h, mono-config.c: added code to deal with bundled configs
11197         for bundled assemblies.
11198
11199 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
11200
11201         * *.c, private.h: cleanup, removing old private.h header file.
11202
11203 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
11204
11205         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
11206         and throw_on_unmappable_char attributes.
11207
11208 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
11209
11210         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
11211         _ProcessName_internal.
11212
11213 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
11214
11215         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
11216         #73631.
11217
11218         * icall.c threads.c threads-types.h: Remove slothash icalls as they
11219         are no longer used.
11220
11221 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
11222
11223         * object.c (compute_class_bitmap): Add support for generics. Fixes
11224         #73527.
11225
11226 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
11227
11228         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
11229
11230 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11231
11232         * filewatcher.c: commented out the code for windows watcher, as we don't
11233         use it (we use the managed implementation instead).
11234
11235 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
11236
11237         * object-internals.h (MonoThread): Remove 'unused1' field.
11238
11239         * appdomain.c: Bump corlib version.
11240
11241         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
11242
11243         * reflection.c (mono_reflection_create_runtime_class): Remove the
11244         AssemblyBuilder.Save optimization since it causes too many problems.
11245
11246 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
11247
11248         * exception.c|h: Added mono_get_exception_reflection_type_load to
11249         create a ReflectionTypeLoadException object.
11250         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
11251         to return NULL is a InheritanceDemand fails during reflection. Updated
11252         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
11253         ReflectionTypeLoadException if an InheritanceDemand fails during 
11254         reflection. Added icall mapping for GetLinkDemandSecurity.
11255         * security-manager.c|h: Added ves_icall_System_Security_
11256         SecurityManager_GetLinkDemandSecurity internal call to return the
11257         class and methods permissions set for a LinkDemand. Removed unused
11258         fields in MonoSecurityManager.
11259
11260 2005-03-10  Martin Baulig  <martin@ximian.com>
11261
11262         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
11263         it's a generic instance.
11264
11265 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
11266
11267         * reflection.c (mono_get_object_from_blob): Applied patch from
11268         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
11269
11270         * class.c (mono_class_is_assignable_from): Another try at fixing 
11271         #73469 without breaking anything.
11272
11273 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
11274
11275         * class.c: (mono_class_is_assignable_from): Revert the last changes
11276         since they don't work with generics.
11277         
11278         * class.c (mono_class_is_assignable_from): Fix build bustage.
11279
11280         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
11281         the managed IsAssignableFrom method. Fixes #73469.
11282
11283         * reflection.c (mono_reflection_call_is_assignable_from): New helper
11284         function.
11285
11286 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
11287
11288         * object.c (mono_load_remote_field_new): Fix returning uninitialized
11289         memory when the remoting callback does not sets the out arguments.
11290         Fixes #73007.
11291
11292         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
11293         by mistake.
11294
11295         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
11296
11297         * object-internals.h (MonoStackFrame): Sync with managed object layout.
11298
11299         * appdomain.c: Bump corlib version.
11300
11301 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
11302
11303         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
11304         function.
11305
11306         * threads.c (mono_thread_attach): Detect threads which are not started
11307         by the GC pthread wrappers.
11308
11309 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
11310
11311         * icall.c: Added new icall for RNG.
11312         * rand.c|h: Added new icall to open the RNG. This allows to share a 
11313         single handle on Linux to access /dev/urandom and fix #73183.
11314
11315 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
11316
11317         * object.c: setting the new vtable in a transparent proxy object must
11318         not change the GC descriptor.
11319
11320 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11321
11322         * object.c: fixed compilation without GCJ support.
11323         * reflection.c: for runtime-created types ensure klass->has_references
11324         is correct (bug #73215).
11325
11326 2005-03-02  Martin Baulig  <martin@ximian.com>
11327
11328         * class.c (mono_class_is_assignable_from): Make this work if
11329         `oklass' is a generic instance; fixes #72831.
11330
11331 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
11332
11333         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
11334         with hasthis set.
11335         
11336         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
11337
11338         * marshal.c: Reorganize native->managed marshalling code to also use
11339         the emit_marshal_... functions.
11340
11341 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
11342
11343         * object.c: typed allocs have issues with bitmap sizes > 30,
11344         so check for max_set >= 30.
11345
11346 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
11347
11348         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
11349         managed code. Fixes #73012.
11350
11351         * metadata.h (MonoMarshalSpec): Add elem_mult field.
11352
11353         * metadata.c reflection.c: Load/Emit elem_mult as well.
11354         
11355         * metadata.h (MonoMarshalSpec): Add comment.
11356
11357         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
11358
11359         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
11360         num_elem to -1 if not given.
11361
11362         * object-internals.h (MonoReflectionMarshal): Add has_size field.
11363
11364         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
11365         given values.
11366
11367 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
11368
11369         * null-gc.c (mono_gc_free_fixed): Was not compilable.
11370
11371 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
11372
11373         * reflection.c (encode_marshal_blob): Encode param_num field as well.
11374
11375         * object-internals.h (MonoReflectionMarshal): Add param_num field.
11376
11377 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
11378
11379         * object.c: generalized the reference bitmap creation
11380         and added hooks for the new GC.
11381         * class-internals.c: removed the gc_bitmap field from MonoClass.
11382
11383 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11384
11385         * domain.c: help the compiler to produce better code
11386         in mono_jit_info_table_find ().
11387
11388 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
11389
11390         * object.c: make all allocations look typed.
11391
11392 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11393
11394         * socket-io.c: load Mono.Posix if it's not loaded already
11395         (fixes bug#73033).
11396
11397 2005-02-24  Martin Baulig  <martin@ximian.com>
11398
11399         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
11400         * reflection.c (dup_type): Likewise.
11401
11402 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
11403
11404         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
11405         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
11406
11407 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
11408
11409         * domain.c, threads.c, object-internals.h: make the critical thread
11410         local vars use the fast access mode (even when we're compiled in
11411         a lib). Provide accessors to be used by the jit during codegen.
11412
11413 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11414
11415         * appdomain.c: Changed hook functios behavior to include
11416         support for the reflection only assemblies. Some icalls were changed
11417         to support the mentioned assemblies too. Signatures of static methods
11418         try_assembly_resolve and real_load now have an additional parameter:
11419         refonly.
11420
11421         * assembly.c: General changes to mono_assembly_ methods to support
11422         reflection only api. Functions mono_assembly_open, mono_assembly_load,
11423         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
11424         suffix, to support an additional gbool parameter to specify whether
11425         the assembli is reflection only or not. Created some new hook functions 
11426         to add support for reflection only assemblies. Signatures of static 
11427         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
11428         have now an additional parameter: refonly.
11429
11430         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
11431         indicating whether the assembly is reflection only or not.
11432
11433         * exception.c: Add mono_get_exception_invalid_operation.
11434
11435         * icall.c: Throw an InvalidOperationException when trying to invoke
11436         a property/method/event, or trying to set/get the value of a field.
11437         Also add an icall to retrieve the ref_only flag to the
11438         MonoReflectionAssembly.
11439
11440 2005-02-23  Chris Toshok  <toshok@ximian.com>
11441
11442         Part of fix for #72827.
11443         * mono-debug.c (mono_debug_add_method): add lexical block data to
11444         the info we write.  Kind of a hack at the moment - we copy the
11445         lexical block info from the MonoDebugMethodInfo to the
11446         MonoDebugMethodJitInfo here, before writing it.
11447         (mono_debug_read_method): read the lexical block info.
11448
11449         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
11450
11451         * debug-mono-symfile.h: add lexical block support.
11452
11453         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
11454         support.
11455
11456 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
11457
11458         * loader.c (mono_lookup_pinvoke_call): Fix warning.
11459
11460         * object.c (mono_runtime_free_method): Call mono_free_method () and
11461         put the TODOs there.
11462
11463         * loader.c (mono_free_method): Free up most memory allocated for 
11464         dynamic methods.
11465
11466 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
11467
11468         * reflection.c: properly flag a Type argument to a
11469         named custom attr value (bug #72248).
11470
11471 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
11472
11473         * reflection.c: reduce code duplication in named custom
11474         attribute encoding.
11475
11476 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
11477
11478         * reflection.c: properly encode custom attrs of type object
11479         (bug #72649).
11480
11481 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
11482
11483         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
11484
11485 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
11486
11487         * socket-io.c: load System.dll if it's not loaded already
11488         (bug #72850 and #70477).
11489
11490 2005-02-21  Martin Baulig  <martin@ximian.com>
11491
11492         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
11493         generic instances.
11494
11495 2005-02-21  Martin Baulig  <martin@ximian.com>
11496
11497         * reflection.c (mono_image_build_metadata): We also need to
11498         "fixup" the MethodImpl table after we computed the final method
11499         indices.  Call fixup_methodimpl() to do that.
11500         (fixup_methodimpl): New private method.
11501
11502 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
11503
11504         * assembly.c: special case mscorlib.dll (bug#72536),
11505         patch from Carlos Alberto Cortez.
11506
11507 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
11508
11509         * threads-types.h threads.c: Fix build bustage.
11510
11511         * threads.c: Use a union for long<->double conversions.
11512
11513         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
11514         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
11515
11516         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
11517         containing the checkpoint call with NOT_TAKEN.
11518         
11519         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
11520         checkpoint before pushing the arguments, so they won't have to be
11521         spilled to stack.
11522
11523 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11524
11525         * domain.c, assembly.c, domain-internals.h: make some data
11526         const and relocation-free.
11527
11528 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
11529
11530         * object.c, appdomain.c, class-internals.h: introduce the
11531         MonoClassRuntimeInfo structure to hold the info needed to
11532         use a class at runtime. Made mono_class_vtable() lock-free
11533         for all the appdomains.
11534
11535 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
11536
11537         * metadata-internals.h, image.c: introduce a per-image mempool to
11538         be used for memory that has the same lifetime as the image.
11539
11540 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
11541
11542         * domain.c: In mono_init_internal(), instead of selecting the first
11543         runtime version supported by an executable, get a list of all
11544         supported versions and select the one for which an mscorlib exists
11545         (since even if the runtime supports a given version, it doesn't mean
11546         that the framework for that version is installed).
11547         Modified get_runtimes_from_exe to support this behavior.
11548         In supported_runtimes, added information about additional system
11549         assembly versions.
11550         
11551         * assembly.c: Added support for more than one system assembly version
11552         per runtime version. Updated the assembly list.
11553         In mono_assembly_remap_version, removed the initial version check,
11554         since we don't know to which version we need to compare until we
11555         get the version set on which the assembly is based.
11556         Moved the code for loading corlib into the new method
11557         mono_assembly_load_corlib(), so it can be used by the initialization
11558         code.
11559         
11560         * domain-internals.h: Updated data structures and added declaration
11561         for mono_assembly_load_corlib.
11562
11563 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
11564
11565         * reflection.c (resolve_object): Fix the creation of the signature in 
11566         the SignatureHelper case.
11567
11568         * assembly.c (mono_assembly_remap_version): Fix binary search.
11569         
11570 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
11571  
11572         * class.c: Added inheritance check when a method is overloaded (from a
11573         virtual method or when implementing an interface) and when a class is
11574         inherited. Added functions to set a failure for a class and to 
11575         retreive the exception from a failure.
11576         * class-internals.h: Added fields to MonoClass to keep the exception
11577         information status for inheritance (or other exceptions) to be thrown
11578         later (i.e. not at load time).
11579         * object.c: Throw the inheritance SecurityException when a type is to 
11580         be created with either class or method inheritance violations.
11581         * reflection.c|h: Fix when getting declsec from a class. Removed 
11582         unrequired code for class. Improved sanity in parameter naming.
11583         * security-manager.c|h: Added functions to check for class and method
11584         inheritance.
11585
11586 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
11587
11588         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
11589         and has_finalize in dynamic types as well.
11590
11591 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
11592
11593         * culture-info-table.h : fixed currency format for en-GB (and so on).
11594
11595 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
11596
11597         * gc.c: ensure the GC handles never have 0 as a value.
11598
11599 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
11600
11601         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
11602         a pointer to a struct to unmanaged code. Fixes #72625.
11603
11604 2005-02-16  Martin Baulig  <martin@ximian.com>
11605
11606         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
11607
11608 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
11609
11610         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
11611
11612 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
11613
11614         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
11615
11616         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
11617         UnmanagedFunctionPointerAttribute, use it for determining calling convention
11618         etc. Fixes #71471.
11619
11620         * reflection.c (mono_custom_attrs_get_attr): New helper function.
11621
11622         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
11623
11624 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
11625
11626         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
11627         changes to make the current context a field in MonoThread.
11628
11629 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
11630
11631         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
11632         the last change.
11633         
11634         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
11635         extracted from mono_marshal_get_native_wrapper.
11636
11637         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
11638         to create wrappers around native functions.
11639
11640         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
11641         delegates for arbitrary function pointers. Fixes #71472.
11642
11643 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
11644
11645         * threads.c: cleaned up the code a little.
11646
11647 2005-02-15  Martin Baulig  <martin@ximian.com>
11648
11649         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
11650         the data table.
11651
11652         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
11653         allocate larger chunks if needed.
11654
11655 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11656
11657         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
11658         in by mistake.
11659
11660 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
11661
11662         * domain.c: keep the domains in an array and ensure the domain ids
11663         are kept small, so they can be used as indexes to domain-specific data
11664         with a small memory overhead.
11665
11666 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11667
11668         * icall.c: Handle byref types in Type icalls. Fixes #72544.
11669
11670 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
11671
11672         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
11673
11674 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
11675
11676         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
11677
11678         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
11679         values.
11680
11681         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
11682         
11683 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
11684
11685         * domain-internals.h: add the hashtable here.
11686
11687         * class-internals.h: Remove `info' from MonoMethod
11688
11689         * domain.c: Add a new hashtable, jit_trampoline_hash
11690
11691 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
11692
11693         * object.c: don't set the value of static fields
11694         (fixes bug#72494).
11695
11696 2005-02-11  Martin Baulig  <martin@ximian.com>
11697
11698         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
11699         (mono_debug_add_method): Silently ignore the method if it's too big.
11700         (mono_debug_add_type): Likewise.
11701
11702 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
11703
11704         * threads.c, appdomain.c: remove #ifdefs from the code.
11705
11706 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
11707
11708         * metadata-internals.h: Added flags to MonoAssembly to cache the most
11709         common security informations. This allows us to stay in unmanaged code
11710         when doing LinkDemand and it's special cases (except for the first 
11711         time for initialization). The flags a very much used with --security.
11712         * reflection.c|h: Added code to get declarative security attributes 
11713         for LinkDemand and InheritanceDemand. This required to refactor the
11714         existing code for Demand.
11715         * security-manager.c|h: Added new method fields for the special cases
11716         of LinkDemand.
11717
11718 2005-02-10  Martin Baulig  <martin@ximian.com>
11719
11720         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
11721         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
11722
11723 2005-02-10  Martin Baulig  <martin@ximian.com>
11724
11725         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
11726         debugging code; this is almost a complete rewrite.
11727
11728         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
11729
11730 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11731
11732         * domain.c, object.h: expose mono_string_equal () and 
11733         mono_string_hash ().
11734         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
11735         it's implemented in managed code.
11736
11737 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11738
11739         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
11740         lo leak objects between appdomains.
11741
11742 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11743
11744         * assembly.c: old compilers compilation fix from 
11745         robertj@gmx.net (Robert Jordan).
11746
11747 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
11748
11749         * class-internals.h: Little reminder for the future.
11750
11751         * debug-helpers.c: Fix up wrapper_type_names
11752
11753 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11754
11755         * image.c, metadata-internals.h: when loading an image from a file,
11756         mmap all of it and use the same codepaths as when using a
11757         in-memory image: the code is simpler and we use less memory
11758         (both writable and readonly).
11759
11760 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
11761
11762         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
11763         API to alloc runtime data structures that need to be tracked by the
11764         GC and contain pointers.
11765         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
11766         make the code more readable and eventually use a different GC.
11767
11768 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
11769
11770         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
11771         for out arguments.
11772         
11773 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
11774
11775         * object.c: In release_type_locks(), don't release the cctor lock
11776         if it has already been released. This fixes a crash in the
11777         thread5 test.
11778
11779 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11780
11781         * gc.c, marshal.c, icall.c: register a delegate for finalization
11782         only when the native function pointer has been allocated for it.
11783
11784 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
11785
11786         * object.c: cleaned up some code, allocate objects that are
11787         pointer free with the atomic malloc variant. Allocate memory
11788         for static data from the mempool if it's pointer-free.
11789         Allocate the bounds array at the end of the array data, when needed.
11790         * object-internals.h, object.h: move a private function in a private
11791         header.
11792         * class.c: handle missing case in tracking references in fields.
11793
11794 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
11795
11796         * class.c, class-internals.h: keep track if a type has
11797         reference fields in either the instance or static fields.
11798
11799 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
11800
11801         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
11802         and renamed to MonoRuntimeInfo. Added fields to store the expected
11803         framework assembly version. Changed mono_get_framework_version and
11804         mono_get_runtime_version for a single mono_get_runtime_info method.
11805         
11806         * assembly.c: Added method to remap system assembly versions to the
11807         current executing runtime version. Removed old mapping code.
11808         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
11809         
11810         * icall.c, reflection.c: Track api changes.
11811
11812 2005-02-06  Miguel de Icaza  <miguel@novell.com>
11813
11814         * loader.c (method_from_memberref): Improve error reporting,
11815         produce the class name instead of the typeref/typedef index. 
11816
11817 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
11818
11819         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
11820
11821 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11822
11823         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
11824         stdcall and charset name mangling.  Reorganize the code and add
11825         some tracing stuff.
11826
11827 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
11828
11829         * monodiet.c: More iters!
11830
11831         * marshal.c: Iter usage.
11832
11833         * icall.c: Iter usage.
11834
11835         * object.c: Use iters.
11836
11837         * debug-helpers.c: More iters
11838
11839 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11840
11841         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
11842         under win32.
11843
11844 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
11845
11846         * mono-debug-debugger.c: use iters
11847
11848         * class.c, class-internals.h: mono_class_setup_events is static
11849         now
11850
11851         * All callers: use iters
11852
11853 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11854
11855         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
11856         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
11857
11858 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11859
11860         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
11861
11862         * marshal.h: Add prototypes for ldfld/stfld_remote.
11863
11864         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
11865         this is called during startup.
11866         
11867 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
11868
11869         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
11870         MonoThreadsSync struct private in monitor.c. Changed the way
11871         MonoThreadsSync is allocated so it's faster and there is no
11872         need to keep track of it with a finalizer and it uses less memory.
11873         This also finally allows us to allocate mono objects as ptrfree when
11874         there are no reference fields.
11875
11876 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
11877
11878         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
11879         disappearing link to the GC interface and use them to simplify
11880         the gchandles code.
11881
11882 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11883
11884         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
11885         stfld_remote which call mono_load/store_field_new. This allows methods
11886         calling ldfld/stfld wrappers to be AOTed.
11887
11888         * console-io.c: Include sys/filio.h under solaris.
11889         
11890         * console-io.c: Include curses.h if needed correctly.
11891
11892 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11893         
11894         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
11895         method->klass as well.
11896
11897         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
11898
11899         * class.c (mono_class_init): Switch on lazy initialization of 
11900         methods.
11901
11902         * class.c (mono_class_get_finalizer): Handle the case when the 
11903         finalizer is inherited.
11904
11905 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11906
11907         * console-io.c: <curses.h> is needed by term.h on solaris.
11908
11909 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
11910
11911         * icall.c, class-internals.h, monodiet.c, class.c: Remove
11912         mono_class_setup_properties where possible. Remove this ftn from
11913         the header file, and make it static.
11914
11915 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11916
11917         * loader.c: Add missing setup_... call.
11918
11919         * class.c: Add missing setup_... calls.
11920
11921         * class.c (mono_class_init): Switch on lazy initialization of 
11922         the generic vtable.
11923         
11924         * class.c (mono_class_init): Fix generics broken by the recent changes.
11925
11926         * monodiet.c (handle_type): Add missing setup_... calls.
11927
11928         * class.c: Back out garbage in previous patch.
11929         
11930         * class.c: Add missing setup_... calls.
11931
11932         * class.c (mono_class_get_method_from_name_flags): Avoid calling
11933         mono_class_setup_methods () if possible.
11934
11935         * class-internals.h (MonoClass): Add 'has_cctor' flag.
11936
11937         * class-internals.h (MonoCachedClassInfo): New structure.
11938
11939         * class.c: Initialize properties and events fields of MonoClass lazily.
11940
11941         * class.c: Add infrastructure for lazily initializing the methods and
11942         vtable fields of MonoClass. Not yet used.
11943
11944         * class.c (mono_class_get_finalizer): New helper function.
11945
11946         * class.c: Add infrastructure for loading some class related data from
11947         an AOT file.
11948
11949         * object.c: Add infrastructure for initializing the vtable from data
11950         in the AOT file.
11951
11952         * gc.c (run_finalize): Use mono_class_get_finalizer ().
11953
11954         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
11955         appropriate initialization function before accessing parts of the
11956         MonoClass structure.
11957
11958         * marshal.c: Fix warnings.
11959         
11960         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
11961
11962         * mono-debug-debugger.c (get_exception_message): Use 
11963         mono_class_get_method_from_name_flags ().
11964
11965 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
11966
11967         * reflection.c, appdomain.c: Replace a few manual searches that
11968         Zoltan missed. (Paolo approved this part of my initial patch).
11969
11970 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
11971
11972         * profiler.c: disable recording statistical events at report time.
11973
11974 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11975
11976         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
11977         to byteswap arrays of enum values, too (bug #72080).
11978
11979 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
11980
11981         * appdomain.c (set_domain_search_path): Allow this to be called if
11982         domain->setup is not yet set.
11983
11984         * loader.c (mono_method_get_index): New helper function.
11985
11986         * loader.c reflection.c: Use mono_method_get_index ().
11987
11988         * class.c (mono_class_get_method_from_name_flags): New helper method.
11989
11990         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
11991         this.
11992
11993         * class.c (mono_class_get_cctor): New helper method.
11994
11995         * string-icalls.c object.c class.c marshal.c reflection.c: Use
11996         mono_class_get_method () to look up methods.
11997
11998 2005-02-01  Miguel de Icaza  <miguel@novell.com>
11999
12000         * console-io.c: Fix the build, this should work on Windows.
12001
12002 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
12003
12004         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
12005         be set to null to keep things valid
12006
12007 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12008
12009         * icall.c: added Console 2.0 icalls.
12010         * Makefile.am: added console-io.[ch]
12011         * console-io.[ch]: internal calls for Console 2.0 API.
12012
12013 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12014
12015         * class.c: make sure we consider all the interfaces
12016         when calculating max_interface_id (bug found by
12017         Jeroen Frijters running ikvm).
12018
12019 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12020
12021         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
12022         valuetype fields to null.
12023
12024         * object.c (set_value): Ditto. Fixes #71669.    
12025
12026 2005-01-31  Martin Baulig  <martin@ximian.com>
12027
12028         * metadata.c (mono_metadata_has_generic_params): New public
12029         function; checks whether something is a generic method.
12030
12031 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12032
12033         * appdomain.c: fix infinite recursion when adding assemblies.
12034
12035 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
12036
12037         * object.c: Fix small typo to return all items for Environment.
12038         GetCommandLineArgs.
12039
12040 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12041
12042         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
12043         reflection.c: more domain and assembly-unload related fixes
12044         and memory leaks plugs.
12045
12046 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12047
12048         * 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.
12049
12050 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12051
12052         * loader.c (mono_method_signature): Make this method lazy
12053         (mono_get_method_from_token): Don't computate the signature here.
12054
12055         Doing this saves quite a bit of memory. I got 90 kb on starting up
12056         monodoc. It should also save some disk reads on startup.
12057
12058         * *: MonoMethod->signature might be NULL now. You *MUST* use
12059         mono_method_signature.
12060
12061 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
12062
12063         * object.c (mono_runtime_get_main_args): Return an array from the
12064         current domain here. Fixes #71938.
12065
12066 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
12067
12068         * monitor.c: formatting changes to comply with the
12069         mono coding style and remove #ifdefs from the code.
12070
12071 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12072
12073         * metadata.c, private.h: remove some unneeded data
12074         and use a more compact representation for table schemas.
12075
12076 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12077
12078         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
12079         to get a better distribution in hash tables.
12080         * *.c: use mono_aligned_addr_hash() where appropriate.
12081         * assembly.c: make var static.
12082
12083 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12084
12085         * domain-internals.h: Put MonoJitInfo on a diet.
12086
12087         * domain.c: Fix a warning.
12088
12089 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12090
12091         * gc.c: rework the gc handles code to reuse handles
12092         when freed.
12093
12094 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
12095
12096         * domain.c: fixed long standing bug in mono_string_equal() which
12097         was brought to light with the ldstr changes.
12098
12099 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12100
12101         * reflection.c: Remove warning by adding missing include for marshal.h
12102
12103 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
12104
12105         * domain.c, object.c: change the ldstr_table to hold
12106         MonoString* as keys: makes the runtime isinterned lookup
12107         faster and simplifies memory management.
12108
12109 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
12110  
12111         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
12112         possible to add imperative security checks before calling the icall.
12113         * reflection.c: Return security attributes on the original MonoMethod
12114         (and not the wrapped one). This fix permissions on icalls.
12115
12116 2005-01-25  Dick Porter  <dick@ximian.com>
12117
12118         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
12119         the check for mktime() support actually test the mktime() return
12120         value.  "Fixes" bug 71682, though the output is still different to
12121         MS.
12122
12123 2005-01-25  Martin Baulig  <martin@ximian.com>
12124
12125         * class.c (mono_class_is_assignable_from): Make this work for
12126         generic instances.
12127
12128 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
12129
12130         * marshal.c (mono_string_utf8_to_builder)
12131         (mono_string_builder_to_utf16): We might not have ownership of the
12132         string. In thise case, we need to create a new buffer.
12133
12134         * object-internals.h (mono_stringbuilder_capacity): sb->str might
12135         be null, in which case, use the default capacity.
12136
12137 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
12138
12139         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
12140         GC events to the profiler.
12141
12142 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
12143
12144         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
12145         if you don't want the GC to run.
12146
12147 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
12148
12149         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
12150         start providing a GC API and keeping different implementations in
12151         their own file.
12152         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
12153
12154 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12155
12156         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
12157         mmap rather than allocating a huge buffer.
12158         (mono_debug_close_mono_symbol_file): Free the buffer allocated
12159         above.
12160
12161 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12162
12163         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
12164         and CheckExecutionRights.
12165         * reflection.c|h: Keep the index of the declarative security to be 
12166         used, instead of the pointer, when AOT compiler is used. Also add 
12167         class initialization when requesting demands.
12168         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
12169         CheckExecutionRights. Both properties are now FALSE by default, and
12170         unmodifiable, unless the --security option is used.
12171
12172 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12173
12174         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
12175         reflection.c: properly refcount images and assemblies, many leaks fixed.
12176
12177 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12178
12179         * threadpool.c: increase the timeout for threads in the thread pool to
12180         10s.  Fixes bug #67159.
12181
12182 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
12183
12184         * class-internals.h: Sun's compiler insists on explicit
12185         signed on bit fields to handle then correctly.
12186
12187 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
12188
12189         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
12190         Make the size of the array fit only the number of invalid path
12191         chars that we have.
12192
12193         * class.c (_mono_class_get): Improve the error reporting when a
12194         class referenced is not found, to assist debugging. 
12195
12196 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
12197
12198         * threads.c: fix off-by-one error.
12199         * domain.c: free data allocated in the domain.
12200
12201 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
12202
12203         * reflection.c (mono_method_body_get_object): Fill out exception info
12204         as well.
12205
12206         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
12207         structure.
12208         
12209 2005-01-19  Martin Baulig  <martin@ximian.com>
12210
12211         * loader.c (mono_get_method_constrained): Make this work again.
12212
12213 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
12214
12215         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
12216         guint16 to match the managed side.
12217
12218         * reflection.c (mono_reflection_body_get_object): Fill out local
12219         variables array.
12220
12221         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
12222         as well.
12223
12224         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
12225         'local_var_sig_token'.
12226
12227 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12228
12229         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
12230         System.Drawing.
12231
12232         * reflection.c (mono_method_body_get_object): Handle abstract and
12233         runtime methods.
12234
12235 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
12236
12237         * marshal.c, loader.c, class-internals.h, reflection.c:
12238         store the emthod data for a wrapper in an array instead of a list.
12239
12240 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
12241
12242         * marshal.c: change the code to allocate memory more
12243         conservatively for method wrappers.
12244
12245 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12246
12247         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
12248         fields from MonoClass to the marshal info structure where they belong.
12249
12250 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
12251
12252         * class.c, object.c, class-internals.h, marshal.c: rearrange
12253         some fields and tweak some types to lower memory usage.
12254
12255 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12256
12257         * threads.c (signal_thread_state_change): Handle the case when the
12258         target thread is the current thread.
12259
12260         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
12261
12262         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
12263         emit_ptr_to_object_conv. 
12264
12265         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
12266         marshalling. Fixes #71352.
12267
12268 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12269
12270         * metadata.h, blob.h: move table enum to blob.h so it can be included
12271         in any header.
12272         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
12273         cut the size of MonoImage/MonoDynamicImage.
12274
12275 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12276
12277         * profiler.c (mono_profiler_install_simple): Fix default arguments.
12278
12279 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
12280
12281         * reflection.c, reflection.h, icall.c: add a function to check
12282         if an attribute type is defined for a metadata object.
12283
12284 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
12285
12286         * object-internals.h: Added some needed fields from StringBuilder class.
12287         * marshal.c: Set the maxCapacity when creating a StringBuilder.
12288
12289 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12290
12291         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
12292         threads before shutting down the runtime.
12293
12294         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
12295
12296 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12297
12298         * object-internal.h, threads.c: implement stacksize and 
12299         parameterized thread start functionality (requires
12300         matching corlib). Marked broken code for later removal.
12301
12302 2005-01-12  Martin Baulig  <martin@ximian.com>
12303
12304         * class-internals.h (MonoGenericClass): Moved the `initialized'
12305         flag to MonoDynamicGenericClass, removed `init_pending'.
12306         (MonoGenericInst): Added `is_reference' flag.
12307
12308 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
12309
12310         * reflection.c (mono_image_create_pefile): Only set the pe_offset
12311         inside the MSDOS header. Fixes #71201.
12312
12313         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
12314         gc thread.
12315         (mono_domain_finalize): Ditto.
12316
12317 2005-01-12  Martin Baulig  <martin@ximian.com>
12318
12319         * class.c (mono_get_shared_generic_class): Use the cache for
12320         non-dynamic generic classes.
12321
12322         * class-internals.h (mono_class_create_generic_2): Removed
12323         function prototype, this function is now static inside class.c.
12324
12325         * class.c (mono_class_create_generic_2): Made this static, only
12326         call it from mono_class_init() and mono_class_setup_parent().
12327         (collect_implemented_interfaces_aux): Call mono_class_init() on
12328         the interfaces we collect.
12329         (mono_class_setup_vtable): Call mono_class_init (class->parent).
12330
12331 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12332
12333         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
12334         it a real thread handle.
12335
12336         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
12337         MonoJitExceptionInfo, since each catch clause needs its own variable.
12338         
12339 2005-01-11  Dick Porter  <dick@ximian.com>
12340
12341         * image.c (mono_pe_file_open): New variant on mono_image_open()
12342         that does not set up the CLI metadata; used for FileVersionInfo so
12343         it can get the data for windows binaries too.
12344         
12345         * process.c (process_read_string_block): Don't read off the end of
12346         the StringTable block.
12347
12348         These both fix bug 70766.
12349
12350 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
12351
12352         * gc.c: set some fields to NULL at GC cleanup time.
12353         * threads.c: if we quit the main thread, call exit ().
12354
12355 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12356
12357         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
12358
12359 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
12360
12361         * threads.h, threads.c, object.c: added accessor and settor for
12362         main_thread. Handle it specially when exiting from it: wait
12363         for other foreground threads to exit.
12364
12365 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
12366
12367         * process.c, verify.c: remove some bloat.
12368
12369 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
12370
12371         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
12372         the calling convention to cdecl under win32.
12373
12374 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
12375
12376         * object.c (mono_object_get_size): New function to get the size of
12377         an object instance.
12378
12379         * profiler.c (simple_allocation): Use above.
12380
12381 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
12382
12383         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
12384         ves_icall_System_AppDomain_getRootDomain (as it's not required to
12385         get an appdomain by it's id and we can't assume the root's id is 0).
12386         * domain-internals.h: Change the function prototype to match.
12387         * icall.c: Change the icall table for AppDomain.
12388
12389 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
12390
12391         * locales.c (string_invariant_compare_char): Only compute
12392         GUnicodeTypes in the case where we need them.  Test for ordinality
12393         first and return if so.
12394
12395         From the commit:
12396
12397                 /*
12398                  * FIXME: here we must use the information from c1type and c2type
12399                  * to find out the proper collation, even on the InvariantCulture, the
12400                  * sorting is not done by computing the unicode values, but their
12401                  * actual sort order.
12402                  */
12403
12404 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12405
12406         * loader.c: for P/Invoke methods, allow the "Internal" shared
12407         library name to refer to the calling process symbol namespace.
12408
12409 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
12410
12411         * Makefile.am: Add the security manager to the build.
12412         * security-manager.c|h: New. Initialization of the security manager.
12413
12414 2005-01-07  Dick Porter  <dick@ximian.com>
12415
12416         * threads.c: 
12417         * monitor.c: Update thread state during Monitor and WaitHandle
12418         waits.  Fixes bug 71031.
12419
12420 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12421
12422         * reflection.c (property_encode_signature): Correctly handle when the
12423         property has no methods.
12424
12425 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
12426
12427         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
12428         
12429         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
12430         fields from mb, not rmb. Fixes #71017.
12431
12432         * marshal.c (emit_ptr_to_str_conv): Add support for 
12433         ByValTStr -> string conversion. Fixes #71015.
12434
12435         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
12436
12437         * mempool.c (mono_mempool_contains_addr): New helper function.
12438
12439 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12440
12441         * metadata.c (mono_metadata_compute_size): Fix size calculation of
12442         HasSematics encoded fields.
12443         
12444         * metadata.c (mono_type_to_unmanaged): Improve error message for 
12445         invalid string marshalling.
12446
12447         * metadata.c: Fix warnings.
12448         
12449 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12450
12451         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
12452         profiler support.
12453
12454 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12455
12456         * domain.c object.c domain-internals.h: Revert part of r38077 since the
12457         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
12458         tests.
12459
12460 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
12461
12462         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
12463         so methods containing these can be AOTed.
12464
12465 2005-01-03  Martin Baulig  <martin@ximian.com>
12466
12467         * loader.c (find_method): Removed the hack for generic instances.
12468         (method_from_memberref): If our parent is a generic instance, pass
12469         its generic type definition to find_method() and then inflate the
12470         method.
12471         (mono_get_method_constrained): Pass the generic type definition to
12472         find_method() and inflate the method later.
12473
12474         * class-internals.h (MonoStats): Added `generic_class_count'.
12475
12476         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
12477         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
12478
12479         * reflection.c (mono_custom_attrs_from_params): Don't ignore
12480         generic type definitions.
12481
12482 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
12483
12484         * loader.c icall.c: Fix warnings.
12485
12486 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
12487
12488         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
12489         blittable types. Fixes #70864.
12490
12491 2004-12-29  Martin Baulig  <martin@ximian.com>
12492
12493         * icall.c
12494         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
12495
12496         * reflection.c (mono_method_get_object): Create a
12497         "System.Reflection.MonoGenericMethod" for inflated methods; don't
12498         call mono_get_inflated_method().
12499
12500         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
12501
12502 2004-12-27  Martin Baulig  <martin@ximian.com>
12503
12504         * class-internals.h (MonoMethod): Added `is_inflated' flag.
12505         (MonoMethodInflated): Added `inflated' field.
12506
12507         * class.c (mono_class_inflate_generic_method): Don't really
12508         inflate the method here; just set the `is_inflated' flag in the
12509         MonoMethod.
12510         (mono_class_get_inflated_method): Actually inflate the method here
12511         if it's not already inflated; we use the MonoMethodInflated's new
12512         `inflated' field as a cache.
12513
12514 2004-12-26  Martin Baulig  <martin@ximian.com>
12515
12516         * class.c
12517         (inflate_generic_class): Moved some code out of inflate_generic_type().
12518         (mono_class_inflate_generic_method): If we're already inflated,
12519         inflate the context and use the declaring method; ie. make sure
12520         the declaring method of an inflated method is always the generic
12521         method definition.
12522         (mono_class_create_from_typedef): Create
12523         `class->generic_container->context->gclass'.
12524
12525 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
12526
12527         * metadata-internals.h, marshal.c, reflection.c: More
12528         MonoGHashTable->GHashTable.
12529
12530         * domain-internals.h, class.c: Change MonoGHashTable's into
12531         GHashTables for some cases where no gc stuff is used
12532
12533         All users: update apis
12534
12535 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
12536
12537         * metadata.c (builtin_types): Make this `const'. Makes this get
12538         put into the shareable section.
12539         (mono_metadata_init): Casts to make gcc happy.
12540
12541 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
12542
12543         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
12544
12545 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
12546
12547         * icall.c: Added an internal call to retrieve the position and length
12548         of assembly-level declarative security attributes (RequestMinimum, 
12549         RequestOptional and RequestRefuse). This is used by the Assembly class
12550         to re-create the corresponding permission sets.
12551
12552 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
12553
12554         * marshal.c: fix the stelemref wrapper to be type correct
12555         (and faster).
12556
12557 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
12558
12559         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
12560         to do key & 0x7fffffff. Hashtable already does this. It just
12561         results in longer code.
12562
12563 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
12564
12565         * appdomain.c: Bump corlib version.
12566         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
12567         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
12568         * reflection.c|h: Add functions to get declarative security infos
12569         (blob position and length) for assemblies, classes and methods.
12570
12571 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
12572
12573         * reflection.c: sort the constant table (bug #70693).
12574
12575 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
12576
12577         * object-internals.h, threads.c, domain.c: add accessors for
12578         the MonoThread and MonoDomain tls keys.
12579
12580 2004-12-18  Martin Baulig  <martin@ximian.com>
12581
12582         * class.c (inflate_generic_type): If we're inflating a generic
12583         instance, set `ngclass->context->container = context->container';
12584         ie. the container we inflated into.
12585
12586         * metadata.c (mono_metadata_parse_generic_param): Reflect above
12587         inflate_generic_type() changes.
12588
12589 2004-12-17  Martin Baulig  <martin@ximian.com>
12590
12591         * class-internals.h
12592         (MonoGenericClass): Replaced `MonoType *generic_type' with
12593         `MonoClass *generic_class'.  Removed `dynamic_info'; if
12594         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
12595         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
12596
12597 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
12598
12599         * exception.c (mono_exception_from_token): New helper function.
12600
12601 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
12602
12603         * assembly.c (mono_assembly_load_with_partial_name): Call 
12604         mono_assembly_loaded before invoking the preload hooks. Fixes
12605         #70564.
12606
12607         * object-internals.h (MonoThread): Change culture_info and 
12608         ui_culture_info into an array.
12609
12610         * threads.c: Cache culture info objects from more than one appdomain.
12611
12612         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
12613         current UI culture.
12614
12615 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
12616
12617         * threads.h threads.c appdomain.c: Clear the culture_info field of
12618         all threads during unloading if they point to an object in the dying
12619         appdomain.
12620
12621 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
12622
12623         * culture-info.h (TextInfoEntry): New struct
12624         * object-internals.h: sync with managed
12625         * locales.c: fill the `text_info_data' field
12626         * culture-info-tables.h: update
12627
12628 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
12629
12630         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
12631         collector.
12632
12633 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
12634
12635         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
12636         (ves_icall_ModuleBuilder_getMethodToken): Ditto
12637
12638 2004-12-12  Martin Baulig  <martin@ximian.com>
12639
12640         * mono-debug-debugger.c (write_type): If we're an enum and the
12641         builtin types have already been initialized, call mono_class_init().
12642
12643 2004-12-11  Martin Baulig  <martin@ximian.com>
12644
12645         * metadata.c (mono_metadata_load_generic_params): Added
12646         `MonoGenericContainer *parent_container' argument; automatically
12647         compute `container->is_method'; pass the correct owner to
12648         get_constraints().      
12649
12650         * reflection.c (compare_genericparam): Sort the GenericParam table
12651         according to increasing owners. 
12652
12653 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
12654
12655         * profiler.c: allow disabling the default profiler.
12656
12657 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
12658
12659         * decimal.c, icall.c: allow disabling System.Decimal support.
12660
12661 2004-12-09  Marek Safar <marek.safar@seznam.cz>
12662
12663         * reflection.c: Add support for null attribute arguments.
12664
12665 2004-12-09  Martin Baulig  <martin@ximian.com>
12666
12667         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
12668         names to get rid of compiler warnings.
12669
12670 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12671
12672         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
12673         mono_marshal_load_type_info (). Fixes #69625.
12674         (mono_marshal_get_ptr_to_struct): Likewise.
12675
12676 2004-12-08  Martin Baulig  <martin@ximian.com>
12677
12678         * mono-debug.h: Bumped version number to 47.
12679
12680         * mono-debug-debugger.c
12681         (mono_debugger_event_handler, mono_debugger_event): Take two
12682         guint64 arguments insteed of a gpointer and a guint32.  
12683
12684 2004-12-08  Martin Baulig  <martin@ximian.com>
12685
12686         * debug-mono-symfile.h
12687         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
12688         `address' to `native_offset'.
12689
12690 2004-12-08  Martin Baulig  <martin@ximian.com>
12691
12692         * class.c (mono_class_create_from_typespec): Only inflate if we
12693         either have `context->gclass' or `context->gmethod'.
12694
12695 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12696
12697         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
12698
12699         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
12700
12701         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
12702
12703         * reflection.c (mono_assembly_get_object): Remove the workaround put
12704         in for the release.
12705         
12706         * appdomain.c: Use the corlib_internal field from MonoAssembly.
12707
12708         * appdomain.c: Bump corlib version.
12709
12710         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
12711         be visible in other appdomains.
12712
12713 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
12714
12715         * threads.c: Interlocked inc and dec for longs were messed up,
12716         use a KISS based impl for this. Fixes 70234
12717
12718 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
12719
12720         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
12721
12722 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
12723
12724         * icall.c: fix to follow policy not to allow struct
12725         arguments in icalls.
12726
12727 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12728
12729         * process.c: make the patch that handles spaces in file paths work
12730         on mono/windows too.
12731
12732 2004-12-06  Martin Baulig  <martin@ximian.com>
12733
12734         * class.c (mono_class_create_generic): Call
12735         mono_class_setup_supertypes() if we're dynamic.
12736         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
12737
12738 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
12739
12740         * object-internals.h: Add new fields to MonoThread.
12741
12742         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12743
12744         * icall.c threads-types.h threads.c: Add new icalls.
12745
12746         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
12747
12748         * object-internals.h (MonoReflectionAssembly): Sync object layout with
12749         managed side.
12750
12751         * appdomain.c: Bump corlib version.
12752
12753         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
12754         internal assemblies. Fixes #69181.
12755
12756 2004-12-05  Martin Baulig  <martin@ximian.com>
12757
12758         * class.c (mono_class_inflate_generic_signature): Make this a
12759         no-op if `context' is NULL or we don't have any type parameters;
12760         also copy `sentinelpos'.        
12761
12762 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
12763
12764         * image.c: Add unbox_wrapper_cache.
12765
12766         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
12767
12768         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
12769         function generator.
12770         
12771         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
12772         Fixes #70173.
12773
12774         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
12775         
12776 2004-12-04  Martin Baulig  <martin@ximian.com>
12777
12778         * loader.c (mono_method_get_signature_full): New public function;
12779         like mono_method_get_signature(), but with an additional
12780         `MonoGenericContext *' argument.
12781
12782         * class.c (mono_class_inflate_generic_signature): Formerly known
12783         as inflate_generic_signature(); make this public.
12784
12785 2004-12-04  Martin Baulig  <martin@ximian.com>
12786
12787         * metadata.c
12788         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
12789         instead of a `MonoGenericContainer *'.  
12790         (mono_metadata_parse_array_full): Likewise.
12791         (mono_metadata_parse_signature_full): Likewise.
12792         (mono_metadata_parse_method_signature_full): Likewise.
12793         (mono_metadata_parse_generic_inst): Likewise.
12794         (mono_metadata_parse_generic_param): Likewise.
12795         (mono_metadata_parse_mh_full): Likewise.
12796         (mono_type_create_from_typespec_full): Likewise.
12797
12798 2004-12-03  Martin Baulig  <martin@ximian.com>
12799
12800         * class-internals.h (MonoGenericContainer): Replaced the
12801         `MonoGenericContext * pointer with a `MonoGenericContext'
12802         structure and made it the first element.
12803
12804 2004-12-03  Martin Baulig  <martin@ximian.com>
12805
12806         * class.c
12807         (inflate_generic_type): Set the `context->container' when creating
12808         a new MonoGenericContext.
12809         (mono_class_inflate_generic_method): Likewise.
12810         (mono_class_create_from_typespec): Just use `context->container'
12811         to get the container.
12812
12813         * loader.c (method_from_methodspec): Set `context->parent' from
12814         `context->container' - and if that's a method container, use its
12815         parent.  Also set the `context->container' when creating a new
12816         MonoGenericContext.
12817         (mono_get_method_from_token): Use just `context->container' to get
12818         the container.
12819
12820         * metadata.c (do_mono_metadata_parse_generic_class): Also set
12821         `gclass->context->container'.
12822
12823         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
12824         the `context->container' when creating a new MonoGenericContext.
12825
12826 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
12827
12828         * reflection.c (compare_genericparam): Sort params with identical
12829         owner by their number. Fixes gen-111 on sparc.
12830
12831 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12832
12833         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
12834         around the domain changes.
12835
12836         * appdomain.c (mono_domain_unload): Handle the case when the thread
12837         calling Unload is itself being aborted during unloading. Fixes #70022.
12838
12839         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
12840
12841         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
12842         checkpoint_func as an icall so it gets a wrapper.
12843         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
12844         in the cross-appdomain wrappers too.
12845
12846         * threads.c (mono_thread_has_appdomain_ref): Make this public.
12847
12848         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
12849
12850         * reflection.c: Fix some memory leaks.
12851         
12852 2004-12-02  Martin Baulig  <martin@ximian.com>
12853
12854         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
12855
12856         * metadata.c (generic_class_cache): New static hashtable.
12857         (mono_metadata_lookup_generic_class): New public method.
12858
12859 2004-12-02  Martin Baulig  <martin@ximian.com>
12860
12861         * class.c (mono_class_create_from_typedef): Call
12862         mono_class_setup_parent() and mono_class_create_mono_type() before
12863         parsing the interfaces.
12864
12865 2004-12-02  Martin Baulig  <martin@ximian.com>
12866
12867         * metadata.c (generic_inst_cache): New static hashtable.
12868         (mono_metadata_lookup_generic_inst): New public function.
12869         (mono_metadata_inflate_generic_inst): New public function.
12870         (mono_metadata_parse_generic_inst): New public function.
12871         (do_mono_metadata_parse_generic_class): Use the new
12872         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
12873         since this'll also use the cache.
12874
12875         * reflection.c (mono_reflection_bind_generic_method_parameters):
12876         Use mono_metadata_lookup_generic_inst() to use the new cache.
12877
12878         * class.c (inflate_mono_type): Use
12879         mono_metadata_inflate_generic_inst() to inflate a generic
12880         instance; this'll also use the new cache.
12881
12882         * loader.c (method_from_methodspec): Use
12883         mono_metadata_parse_generic_inst() and
12884         mono_metadata_inflate_generic_inst() rather than parsing it
12885         manually, so we can use the new cache.
12886
12887 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12888
12889         * threads.c (wait_for_tids): Do not incorrectly free threads when 
12890         the wait times out.
12891
12892 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
12893
12894         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
12895         iter->args based on whether parameters are passed in registers (i.e.
12896         MONO_ARCH_REGPARMS is defined)
12897
12898 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
12899
12900         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
12901         the exception message. Fixes #70070.
12902         (method_from_methodspec): Fix warnings.
12903
12904 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12905
12906         * process.c: (complete_path) return the path quoted
12907
12908 2004-12-01  Martin Baulig  <martin@ximian.com>
12909
12910         * class-internals.h (MonoGenericInst): New structure.
12911         (MonoGenericClass): Replaced `type_argc', `type_argv' and
12912         `is_open' with `MonoGenericInst *inst'.
12913         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
12914         `is_open' with `MonoGenericInst *inst'.
12915
12916 2004-11-30  Martin Baulig  <martin@ximian.com>
12917
12918         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
12919
12920         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
12921         to `generic_class_cache'.
12922
12923         * metadata.c
12924         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
12925         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
12926         (mono_generic_inst_is_valuetype): Renamed to
12927         mono_generic_class_is_valuetype().
12928
12929         * class-internals.h
12930         (MonoGenericInst): Renamed to MonoGenericClass.
12931         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
12932         (MonoClass): Renamed `generic_inst' to `generic_class'.
12933         (MonoGenericContext): Renamed `ginst' to `gclass'.
12934
12935         * object-internals.h
12936         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
12937
12938         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
12939         mono_reflection_generic_class_initialize().
12940
12941         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
12942         now known as "System.Reflection.MonoGenericClass".
12943         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
12944
12945 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
12946
12947         * class-internals.h: Added a flag field to MonoClass to cache the
12948         declarative security attributes actions associated with the class.
12949         * domain-internals.h: Added booleans to MonoJitInfo to cache the
12950         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
12951         applicable to the JITted method.
12952         * reflection.c|h: Added functions to extract (as flags) which security
12953         actions are available (declaratively) for a method, class or assembly.
12954         * metadata.c|h: Added functions to search the declarative security
12955         table in the metadata.
12956         
12957 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
12958
12959         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
12960         EXPORTEDTYPES are already in the class name cache, so there is no
12961         need to add extra code here to look at them. Just removes a bit of
12962         cruft.
12963
12964         (ves_icall_System_Environment_get_TickCount): No need for #if
12965         WINDOWS. We already have the code in io-layer.
12966
12967 2004-11-28  Martin Baulig  <martin@ximian.com>
12968
12969         * loader.c
12970         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
12971         Fixes gen-112.cs.
12972
12973 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
12974
12975         * assembly.c (do_mono_assembly_open): Instead of having a
12976         conditional WITH_BUNDLE, incorporate support for bundles here, by
12977         having a global `bundles' variable holding a pointer to the actual
12978         bundles. 
12979
12980         (mono_register_bundled_assemblies): New API call used by the
12981         bundle code. 
12982
12983         See mkbundle.1 for details.
12984         
12985 2004-11-27  Martin Baulig  <martin@ximian.com>
12986
12987         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
12988         the vtable for generic methods.
12989
12990 2004-11-26  Martin Baulig  <martin@ximian.com>
12991
12992         * metadata.c
12993         (mono_metadata_generic_method_hash): New public function.
12994         (mono_metadata_generic_method_equal): Likewise.
12995
12996         * class-internals.h
12997         (MonoGenericContainer): Added `GHashTable *method_hash'.
12998
12999         * reflection.c (ReflectionMethodBuilder): Added
13000         `MonoGenericContainer *generic_container'.
13001         (reflection_methodbuilder_to_mono_method): Don't create a new
13002         MonoGenericContainer each time we're called.
13003         (mono_reflection_bind_generic_method_parameters): Use
13004         `container->method_hash' to cache the results so we don't create a
13005         different method if we're called several times with the same
13006         arguments.
13007
13008         * loader.c (method_from_methodspec): Use the new
13009         `container->method_hash' here, too.
13010
13011 2004-11-26  Martin Baulig  <martin@ximian.com>
13012
13013         * class.c (inflate_generic_signature): Correctly compute
13014         `res->has_type_parameters'.
13015         (mono_class_vtable): Use the `has_type_parameters' flag to
13016         determine whether we're a generic method.
13017
13018         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
13019
13020 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13021
13022         * object.c (mono_runtime_run_main): Fix a small memory leak.
13023
13024 2004-11-25  Martin Baulig  <martin@ximian.com>
13025
13026         * class.c (set_generic_param_owner): Fixed the loop.
13027
13028 2004-11-25  Martin Baulig  <martin@ximian.com>
13029
13030         * object.c (mono_class_vtable): Don't create any JIT wrappers for
13031         generic methods.
13032
13033 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13034
13035         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
13036         names. Fixes #69787.
13037
13038 2004-11-24  Martin Baulig  <martin@ximian.com>
13039
13040         * class.c (mono_class_create_generic_2): If we don't have a
13041         `ginst->parent', inflate `gklass->parent' to get our parent.
13042
13043 2004-11-24  Martin Baulig  <martin@ximian.com>
13044
13045         * reflection.c (compare_genericparam): Correctly sort the
13046         GenericParam table; fixes #69779.
13047
13048 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
13049
13050         * reflection.c: When writing a PE file, don't create a huge
13051         buffer in memory. Just write the arrays we have to the file.
13052         This reduces memory usage.
13053
13054         * metadata-internals.h: MonoDynamicStream pefile is no longer used
13055         globally.
13056
13057 2004-11-17  Martin Baulig  <martin@ximian.com>
13058
13059         * class.c (mono_class_init): Don't setup `class->parent' for
13060         dynamic instances; moved this to mono_class_generic_2().
13061         (mono_class_create_generic): Also set `klass->inited' for dynamic
13062         generic instances.
13063         (mono_class_create_generic_2): Don't do anything for dynamic
13064         generic instances.  Set `klass->parent' here and also call
13065         mono_class_setup_parent() here. 
13066
13067         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
13068         `MonoType *parent' argument; set `ginst->parent' before calling
13069         mono_class_create_generic_2(), so we set the correct parent.
13070
13071 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
13072
13073         * reflection.c: allow getting attributes from ModuleBuilder
13074         (used by ikvm).
13075
13076 2004-11-17  Martin Baulig  <martin@ximian.com>
13077
13078         * class.c (mono_class_create_from_typedef): If a type parameter is
13079         inherited from an outer class, set its owner to that class.
13080
13081 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
13082
13083         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
13084           for (int*) written size. This fixes bug #69592.
13085
13086 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13087
13088         * icall.c: Added IsAuthenticodePresnet internal call.
13089         * image.c|h: New function that check a MonoImage for an Authenticode
13090         signature in the certificate PE data directory.
13091         * security.c|h: New internal call to ask the runtime if an 
13092         Authenticode signature seems referenced in the PE header.
13093
13094 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
13095
13096         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
13097
13098         * reflection.c (mono_image_create_pefile): Free the assembly streams
13099         after writing out the assembly file.
13100
13101         * object.c (mono_runtime_run_main): Fix small memory leak.
13102
13103         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
13104         property access modifiers. Fixes #69389.
13105
13106 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13107
13108         * domain.c, object.c, object-internals.h, domain-internals.h,
13109         object.h, marshal.c: keep dynamic code info per domain.
13110
13111 2004-11-15  Martin Baulig  <martin@ximian.com>
13112
13113         * class.c (mono_type_get_name_recurse): Put type arguments in
13114         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
13115         see bug #68387.
13116
13117 2004-11-15  Martin Baulig  <martin@ximian.com>
13118
13119         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
13120         (mono_class_setup_vtable): When computing `the_cname' for a
13121         generic instance, don't include the namespace since we'd otherwise
13122         add it twice.
13123
13124 2004-11-15  Martin Baulig  <martin@ximian.com>
13125
13126         * class.c (mono_class_create_generic): Changed return type to void.
13127         (mono_class_create_generic_2): New public function; setup
13128         `class->method', `class->field' and `class->interfaces' here
13129         instead of in mono_class_init().
13130
13131         * class.h (mono_class_create_generic): Moved to class-internals.h.
13132
13133 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
13134
13135         * reflection.c (mono_image_create_pefile): take a file HANDLE.
13136         rather than writing to memory, write to this file. Right now,
13137         we are just writting into a buffer, and copying that. However
13138         we can avoid the buffer later.
13139
13140         (mono_dynamic_stream_reset): new function
13141
13142         * icall.c, object-internals.h: update for the above.
13143
13144 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
13145
13146         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
13147         have been using gc'd memory. First it is slower, unlikely
13148         the comment in the source code said, secondly, it increases
13149         our footprint to do it in the gc.
13150
13151         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
13152         the method so that it does not have to copy to managed code.
13153
13154 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13155
13156         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
13157
13158 2004-11-12  Martin Baulig  <martin@localhost>
13159
13160         * reflection.c (mono_image_create_token): Allow generic method
13161         definitions here, since they may appear in an `.override'; see
13162         gen-98/gen-99 for an example.
13163
13164 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
13165
13166         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
13167         #69365.
13168
13169         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
13170         descriptive.
13171
13172 2004-11-11  Martin Baulig  <martin@ximian.com>
13173
13174         * class.c (mono_class_setup_vtable): In an explicit interface
13175         implementation, the method name now includes the arity.
13176
13177 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
13178
13179         * object.c (mono_array_full_copy): Fix warning.
13180
13181 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
13182
13183         * appdomain.c: Removed look_for_method_by_name(). Use the new method
13184         mono_class_get_method_from_name() instead.
13185         
13186         * class-internals.h: Added two new types of wrappers. 
13187         Added MonoRemotingTarget enum. Added new trampoline function type, which
13188         takes an additional MonoRemotingTarget value as parameter, so it is
13189         possible to request a trampoline for a specific target.
13190         
13191         * class.c: Added new mono_class_get_method_from_name() method.
13192         
13193         * class.h: In MonoRemoteClass, we can have now to vtables, one for
13194         general remoting sinks and one specific for cross domain calls.
13195         
13196         * debug-helpers.c: Added new wrapper names.
13197         
13198         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
13199         of a remote class.
13200         
13201         * image.c: Porperly delete value objects form the remoting invoke hashtable.
13202         
13203         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
13204         with several other methods (mono_marshal_get_xappdomain_dispatch,
13205         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
13206         and others) can generate a fast remoting wrapper for cross domain calls.
13207         More information can be found in docs/remoting.
13208         Other changes: Removed mono_find_method_by_name, and used
13209         mono_class_get_method_from_name instead.
13210         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
13211         is stored in the remoting invoke hashtable.
13212         
13213         * marshal.h: published the new method for getting the xdomain wrapper,
13214         and also added a method for getting the adequate wrapper for a given
13215         method and target.
13216         
13217         * object-internals.h, object.c: Added a couple of methods for capying and
13218         cloning arrays.
13219         Modified mono_install_remoting_trampoline, which takes the new remoting
13220         trampoline that has a remoting target as parameter.
13221         mono_class_proxy_vtable now also takes a remoting target as parameter, and
13222         will return the most suitable vtable for the target.
13223         Added mono_remote_class_vtable, which returns the vtable of a remote class
13224         (which can be the normal remoting vtable or the xdomain vtable).
13225         
13226         * threads.c: the xdomain invoke and dispatch wrappers must also be
13227         protected against interruptions.
13228
13229 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13230
13231         * icall.c: use memmove in BlockCopyInternal when the source and
13232         destination arrays are the same.
13233
13234 2004-11-09  Martin Baulig  <martin@ximian.com>
13235
13236         * class-internals.h (MonoGenericContainer): Removed `method' and
13237         `signature', replaced them with `is_method' and `is_signature'
13238         flags.  Added `context'.
13239
13240         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
13241         instead of a `MonoGenericContainer *'.
13242
13243         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
13244         for dynamic type parameters.
13245         (mono_metadata_load_generic_params): Setup `container->context'.
13246
13247         * reflection.c (mono_reflection_setup_generic_class): Setup
13248         `tb->generic_container->context'.
13249         (do_mono_reflection_bind_generic_parameters): Use
13250         mono_class_inflate_generic_type() to correctly inflate types,
13251         rather than using our own hack just for MONO_TYPE_VAR.
13252
13253 2004-11-09  Martin Baulig  <martin@ximian.com>
13254
13255         * class.c (mono_class_inflate_generic_method): Small fix; don't
13256         crash here.
13257
13258         * icall.c
13259         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
13260         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
13261         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
13262         (ves_icall_Type_BindGenericParameters): Likewise.
13263         (ves_icall_Type_get_IsGenericInstance): Likewise.
13264         (ves_icall_Type_GetGenericParameterPosition): Likewise.
13265         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
13266         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
13267         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
13268
13269 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13270
13271         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
13272         assembly versions and public key tokens. Fixes #69113.
13273
13274 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
13275
13276         * metadata.c: fix bug introduced with the type cache changes
13277         on 2004-11-06.
13278
13279 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
13280
13281         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
13282         the MonoClass pointer instead of the token in exception clauses.
13283         * reflection.c: updates for the above and make the code not depend
13284         on the structure of MonoExceptionClause.
13285
13286 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13287
13288         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13289         Add support for dynamic assemblies. Fixes #69114.
13290
13291         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
13292
13293 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13294
13295         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
13296         since most only those methods use it. the code member of
13297         MonoMethodPInvoke was dead, so that can be removed too. Also,
13298         remove inline_count (again, not used), and move slot so that it
13299         can share bits with some other flags. This saves 8 bytes in the
13300         structure and gives us about 50 kb back for mcs helloworld.cs
13301
13302         * *.[ch]: Do naming changes for the above.
13303
13304         * loader.c (mono_method_get_header): Lazily init the header
13305         on first access.
13306         (mono_get_method_from_token): don't init the header here
13307         (mono_free_method): the header may never be allocated
13308
13309         Overall, this saves 150 kb of unmanaged allocations
13310         for mcs helloworld.cs. That accounts for 10% of the unmanaged
13311         memory at runtime.
13312         
13313         * loader.c, loader.h (mono_method_get_header): new accessor.
13314
13315         * *.[ch]: use the above method. Prepares us to lazily load
13316         the header.
13317
13318         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
13319         three warnings, which are actual bugs (see 69206).
13320
13321         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
13322         unused. Saves a cool 4 bytes / method.
13323
13324 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
13325
13326         * metadata.c (builtin_types): Add types for System.Object here.
13327         (mono_metadata_parse_type_full): Cache MonoType*'s that are
13328         for a class or valuetype from klass->this_arg or klass->byval_arg.
13329
13330         On mcs for a hello world, this gets us down from 21836 MonoType's
13331         to 14560.
13332
13333         (mono_metadata_free_type): Account for the above change.
13334
13335 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
13336
13337         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
13338         exception instead of asserting if name is null.
13339         (ves_icall_System_AppDomain_GetData): Ditto.
13340
13341 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13342
13343         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
13344         EnumBuilder.
13345
13346         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
13347         Return NULL when the domain does not have entry_assembly set.
13348
13349         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
13350         Add a 'resource_modules' argument.
13351         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
13352
13353         * reflection.c (mono_reflection_create_runtime_class): Move setting
13354         of wastypebuilder here, so mono_get_type_object () returns a MonoType
13355         for enums too.
13356
13357         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
13358         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
13359         Throw an ArgumentNullException if 'ptr' is null.
13360
13361         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
13362         assemblies here. Fixes #69020.
13363
13364 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13365
13366         * reflection.c (build_compressed_metadata): Fix the previous patch for
13367         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
13368         the stack.
13369
13370 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
13371
13372         * assembly.c (mono_assembly_names_equal): Allow a match if one of
13373         the cultures is false. Fixes #69090.
13374
13375         * reflection.c (build_compressed_metadata): Fix invalid memory read 
13376         detected by valgrind.
13377         
13378         * reflection.c (mono_reflection_get_type): Avoid triggering a 
13379         TypeResolve multiple times for the same type. Fixes #65577.
13380
13381 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
13382
13383         * marshal.c: Avoid using ldftn to call managed functions. It is
13384         much slower than just a call.
13385
13386         * reflection.c (mono_module_get_object): free the basename we
13387         allocate here from glib.
13388         
13389         * reflection.c (ensure_runtime_vtable): make sure to free
13390         overrides.  Also, we were allocating an array of MonoMethod not an
13391         array of MonoMethod*.
13392
13393         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
13394
13395         * image.c (mono_image_close): free image->guid here.
13396
13397 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13398
13399         * reflection.c: Fix some spec conformance issues with the PE file
13400         structures so mcs compiled apps run on the Net 2.0 beta.
13401
13402 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
13403
13404         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
13405         Implement this. Fixes #67264.
13406
13407         * debug-helpers.h debug-helpers.c marshal.c: Move 
13408         mono_find_method_by_name to debug-helpers.c.
13409
13410 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
13411
13412         * object.c (mono_release_type_locks): type_initialization_hash is
13413         a GHashTable.
13414
13415         * reflection.c object.c object-internals.h: Fix warnings.
13416
13417         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
13418         without accessors. Fixes #61561.
13419
13420         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
13421         application base from the root domain if not set. Fixes #65641.
13422         (mono_runtime_init): Fix warning.
13423
13424 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13425
13426         * appdomain.c: call mono_thread_pool_init.
13427         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
13428         of worker threads based on the number of CPUs and the environment
13429         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
13430         for non-windows (windows) systems.
13431
13432 2004-10-27  Chris Toshok  <toshok@ximian.com>
13433
13434         * mono-debug-debugger.c (write_class): don't call mono_class_init
13435         here, as even with the check for (!klass->init_pending), we get
13436         into a situation where we're hitting cycles in class
13437         initialization.  Fixes #68816.
13438
13439 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13440
13441         * image.c: Avoid overwriting values in the loaded_images_hash when an
13442         assembly is loaded multiple times. Fixes #61152.
13443
13444         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
13445         so multiple satellite assemblies for the same name can be loaded.
13446         Fixes #68259.
13447
13448         * mono_domain_assembly_preload: Actually return the loaded assembly, 
13449         not NULL.
13450
13451         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
13452         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
13453
13454         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
13455         pending finalizers are not invoked after the appdomain has been 
13456         unloaded. Fixes #67862.
13457
13458 2004-10-22  Martin Baulig  <martin@ximian.com>
13459
13460         * mono-debug-debugger.c
13461         (mono_debugger_runtime_invoke): Don't box valuetypes.
13462
13463 2004-10-22  Chris Toshok  <toshok@ximian.com>
13464
13465         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
13466         don't hide private methods.
13467
13468 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
13469
13470         * icall.c: Allows the runtime to "share" (when known) the public key
13471         token of an assembly. This avoid the need to recalculate the token 
13472         (from the public key) in managed code.
13473
13474 2004-10-21  Chris Toshok  <toshok@ximian.com>
13475
13476         * debug-helpers.c (append_class_name): argh, revert last patch.
13477         
13478 2004-10-21  Chris Toshok  <toshok@ximian.com>
13479
13480         * debug-helpers.c (append_class_name): use '+' as the delimiter,
13481         not '/', so that it matches what the debugger uses to look up
13482         methods.
13483
13484 2004-10-21  Martin Baulig  <martin@ximian.com>
13485
13486         * mono-debug-debugger.c (mono_debugger_throw_exception): New
13487         public method; this is called each time an exception is thrown and
13488         allows the debugger to use exception catch points.
13489
13490 2004-10-21  Martin Baulig  <martin@ximian.com>
13491
13492         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
13493         the stack pointer and the exception object in some struct and pass
13494         that to the debugger.
13495
13496 2004-10-21  Chris Toshok  <toshok@ximian.com>
13497
13498         * mono-debug-debugger.c (do_write_class): add instance/static
13499         event support.  We don't expose "raise" or "other" yet.
13500         (event_is_static): new method.
13501
13502 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
13503
13504         * mono-debug-debugger.c
13505         (mono_debugger_handle_exception): Remove
13506         bogus return value for fussy compilers.
13507
13508 2004-10-20  Martin Baulig  <martin@ximian.com>
13509
13510         * mono-debug-debugger.c
13511         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
13512         (mono_debugger_handled_exception): Likewise.
13513
13514 2004-10-20  Martin Baulig  <martin@ximian.com>
13515
13516         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13517         MONO_DEBUGGER_EVENT_EXCEPTION.
13518
13519         * mono-debug-debugger.c (mono_debugger_handle_exception): New
13520         public function to send the debugger a notification for an
13521         exception and inform it about a catch/finally clause.
13522
13523 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
13524
13525         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
13526         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
13527         fix 2.95 build. 
13528
13529         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
13530
13531 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13532
13533         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
13534         marshalled as [In,Out]. Fixes #58325.
13535
13536 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
13537
13538         * reflection.c (mono_method_body_get_object): Implement some fields.
13539
13540 2004-10-12  Martin Baulig  <martin@ximian.com>
13541
13542         * reflection.c (mono_reflection_bind_generic_parameters): Small
13543         fix, correctly retrieve our parent from a generic instance.
13544
13545 2004-10-12  Martin Baulig  <martin@ximian.com>
13546
13547         * metadata.c (mono_metadata_generic_param_equal): We always have
13548         an owner.
13549
13550         * class.c
13551         (mono_class_from_generic_parameter): We need to have an owner.
13552         (my_mono_class_from_generic_parameter): Likewise.
13553
13554         * reflection.c (mono_reflection_setup_generic_class): Renamed to
13555         mono_reflection_create_generic_class() and added a new
13556         mono_reflection_setup_generic_class().  
13557         (mono_reflection_initialize_generic_param): If we're a nested
13558         generic type and inherited from the containing class, set our
13559         owner to the outer class.
13560
13561 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
13562
13563         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
13564
13565         * reflection.c (mono_method_body_get_object): New function to create
13566         a MethodBody object.
13567
13568         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
13569
13570 2004-10-11  Martin Baulig  <martin@ximian.com>
13571
13572         * metadata.c (_mono_metadata_type_equal): Renamed to
13573         do_mono_metadata_type_equal() and made static.
13574
13575 2004-10-11  Martin Baulig  <martin@ximian.com>
13576
13577         * appdomain.c: Bump corlib version number to 28.
13578
13579 2004-10-10  Martin Baulig  <martin@ximian.com>
13580
13581         * class-internals.h
13582         (MonoGenericInst): Added `MonoGenericContainer *container'.
13583         (MonoGenericMethod): Likewise.
13584         (MonoGenericContext): Likewise.
13585         (MonoGenericParam): Added `MonoGenericContainer *owner'.
13586
13587         * metadata.c
13588         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
13589         (do_mono_metadata_parse_generic_inst): Likewise.
13590         (mono_metadata_parse_type_full): New public method.  This is the actual
13591         mono_metadata_parse_type() implementation - with an additional
13592         `MonoGenericContainer *' argument.
13593         (mono_metadata_parse_array_full): Likewise.
13594         (mono_metadata_parse_signature_full): Likewise.
13595         (mono_metadata_parse_method_signature_full): Likewise.
13596         (mono_metadata_parse_mh_full): Likewise.
13597         (mono_type_create_from_typespec): Likewise.
13598         (mono_metadata_interfaces_from_typedef_full): New public method;
13599         this is similar to the other _full() methods, but we take a
13600         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
13601         (mono_metadata_parse_generic_param): Take an additional
13602         `MonoGenericContainer *' argument and lookup the MonoGenericParam
13603         from that container.
13604         (mono_metadata_generic_param_equal): New static method to compare
13605         two type parameters.
13606         (_mono_metadata_type_equal): New static method; takes an
13607         additional `gboolean signature_only' argument - if true, we don't
13608         compare the owners of generic parameters.
13609         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
13610         with a TRUE argument - do a signature-only comparision.
13611
13612         * loader.c: Use the new _full() methods and pass the
13613         MonoGenericContainer to them.
13614
13615         * object-internals.h (MonoReflectionTypeBuilder): Added
13616         `MonoGenericContainer *generic_container' field.
13617         (MonoReflectionMethodBuilder): Likewise.
13618
13619 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
13620
13621         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
13622         case initial images of dynamic assemblies.
13623
13624         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
13625
13626         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
13627
13628         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
13629         length of event->other array.
13630         (typebuilder_setup_events): Ditto.
13631
13632         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
13633         'assembly_by_name' and add an 'assemblies' list.
13634
13635         * assembly.h assembly.c: Add a new search hook for determining whenever
13636         an assembly is already loaded. Use this instead of searching in the
13637         loaded_assemblies list.
13638
13639         * domain.c appdomain.c: Implement the new search hook so loaded 
13640         assemblies are now scoped by appdomain. Fixes #67727.
13641
13642 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
13643
13644         * threads.c (mono_thread_attach): Initialize synch_lock field so
13645         mono_thread_detach works again.
13646
13647         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
13648         'lib' too. Fixes #63130.
13649
13650 2004-10-06  Jackson Harper  <jackson@ximian.com>
13651
13652         * culture-info-tables.h: regenerated.
13653
13654 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
13655
13656         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
13657         implemented by other interfaces in the result. Fixes #65764.
13658         
13659         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13660         Handle unloadable modules without crashing.
13661
13662         * image.c (load_modules): Revert the previous patch since modules must
13663         have a fixed index inside the array.
13664         
13665         * image.c (load_modules): Don't include native modules in the modules
13666         array.
13667
13668 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
13669
13670         * reflection.h: Add param_defaults field.
13671
13672         * reflection.c: Add support for parameter defaults in dynamic methods.
13673         Fixes #64595.
13674
13675         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
13676         an empty string when a type has no namespace. Fixes #64230.
13677
13678 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
13679
13680         * tabledefs.h: Added "internal" security actions to support non-CAS
13681         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
13682         Note: they do not seems to be used anymore in 2.0 (new metadata format)
13683
13684 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
13685
13686         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
13687         constructor of abstract class. Fixes #61689.
13688
13689 2004-10-04  Martin Baulig  <martin@ximian.com>
13690
13691         * class-internals.h (MonoGenericContainer): New type.
13692         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
13693         `MonoGenericContainer *generic_container'.
13694         (MonoClass): Replaced `gen_params' and `num_gen_params' with
13695         `MonoGenericContainer *generic_container'.
13696
13697         * metadata.c (mono_metadata_load_generic_params): Return a
13698         `MonoGenericContainer *' instead of a `MonoGenericParam *';
13699         removed the `num' argument.
13700
13701 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
13702
13703         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
13704         for dynamic images.
13705
13706         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
13707         machine fields.
13708
13709         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
13710
13711         * reflection.c: Save pe_kind and machine values into the generated
13712         image file.
13713
13714         * appdomain.c: Bump corlib version number.
13715
13716         * object-internals.h: Reorganize layout of LocalBuilder.
13717
13718         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
13719         New helper function.
13720
13721         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
13722         created MonoType for dynamic types. Fixes #66180.
13723
13724 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
13725
13726         * threadpool.c: the ares hashtable needs a critical section around it.
13727         this prevents some nasty segfaults
13728
13729 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
13730
13731         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
13732         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
13733         bug 67324).
13734         
13735 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
13736
13737         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
13738         
13739 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
13740
13741         * image.c: Always canonicalize image file names, to avoid loading
13742         the same assembly twice when referenced using a relative path.
13743
13744 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
13745
13746         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
13747
13748         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
13749
13750         * marshal.c: Fix warnings.
13751
13752 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
13753
13754         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
13755         attempting to marshal the delegate_trampoline as the method_addr.
13756         This patch has a static hashtable of marshalled delegates so that 
13757         we can map delegate_trampoline addresses back to delegates.  This
13758         allows a delegate passed to managed code to be passed back into native
13759         code.  Fixes #67039
13760
13761 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13762
13763         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
13764
13765         * reflection.c (method_encode_code): Align method headers properly.
13766         Fixes #66025.
13767
13768 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13769
13770         * marshal.c: In the runtime invoke wrapper, reset the abort
13771         exception if it is cached. This avoids the automatic rethrowal of 
13772         the exception after the catch of the wrapper. Also check for pending
13773         interruptions before calling the managed method. This is done using
13774         the new method emit_thread_force_interrupt_checkpoint, since the
13775         normal checkpoint method is ignored when running the invoke wrapper.
13776         * object.c: If the abort exception is rethrown, set the abort_exc
13777         field of the thread, so it will be rethrown aftere every catch.
13778         * threadpool.c: Only run an interruption checkpoint if what has been
13779         requested is a stop of the thread (aborts will be ignored).
13780         * threads.c: By default, a thread will now never be interrumped while
13781         running the runtime invoke wrapper (this ensures that runtime_invoke
13782         will always return to the caller if an exception pointer is provided).
13783         There is a new special method mono_thread_force_interruption_checkpoint()
13784         to force an interruption checkpoint even if running a protected
13785         wrapper, which is used by the same runtime invoke wrapper to do a check
13786         at a safe point.
13787
13788 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13789
13790         * object.c, object-internals.h: Implemented mono_release_type_locks,
13791         which releases the cctor locks held by a thread.
13792         * threads.c, threads.h: In thread_cleanup, release cctor locks held
13793         by a thread. Added mono_thread_exit() method to be used to safely stop
13794         a thread.
13795
13796 2004-09-28  Raja R Harinath  <rharinath@novell.com>
13797
13798         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13799         Move null check before dereference.  Avoid indexing beyond the end
13800         of the 'modules' array.
13801
13802 2004-09-28  Raja R Harinath  <rharinath@novell.com>
13803
13804         * metadata-internals.h (MonoImage): Add module_count field.
13805         * image.c (load_modules): Set image->module_count.
13806         (mono_image_load_file_for_image): Use image->module_count.
13807         * reflection.c (mono_image_load_module): Append to image->modules array 
13808         of dynamic assembly.
13809         (mono_module_get_object): Fix loop to actually increment index.
13810         Use image->module_count.
13811         * assembly.c (mono_assembly_load_references): Use image->module_count.
13812         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
13813         Likewise.
13814
13815 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13816
13817         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
13818         Avoid assert on generic types.
13819
13820 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
13821
13822         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
13823
13824         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
13825
13826         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
13827         function to convert a MarshalSpec structure to its managed counterpart.
13828
13829         * reflection.c: Fix warnings.
13830         
13831         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
13832         field.
13833
13834         * icall.c (mono_create_icall_signature): Fix build.
13835
13836 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
13837
13838         * icall.c: Add MakePointType icall.
13839
13840         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
13841         warnings.
13842
13843 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13844
13845         * threadpool.c: reuse allocated slots in the queue.
13846
13847 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
13848
13849         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
13850
13851         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
13852
13853         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
13854         previous change.
13855
13856         * tabledefs.h: Add constants for pinvoke attributes BestFit and
13857         ThrowOnUnmappableChar.
13858
13859         * icall.c (ves_icall_Type_GetPacking): New icall.
13860
13861 2004-09-24  Martin Baulig  <martin@ximian.com>
13862
13863         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
13864
13865 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13866
13867         * appdomain.c:
13868         (mono_domain_set): allow setting a domain that is being unloaded.
13869         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
13870         being unloaded.
13871
13872 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13873
13874         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
13875         the GetCustomAttributes icall.
13876
13877 2004-09-23  Martin Baulig  <martin@ximian.com>
13878
13879         * object-internals.h (MonoReflectionGenericParam): Replaced
13880         'has_ctor_constraint', `has_reference_type' and `has_value_type'
13881         with `guint32 attrs'.
13882
13883 2004-09-23  Martin Baulig  <martin@ximian.com>
13884
13885         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
13886
13887 2004-09-23  Martin Baulig  <martin@ximian.com>
13888
13889         * object-internals.h (GenericParameterAttributes): New enum.
13890
13891 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13892
13893         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
13894         
13895         * class.c (init_events): Fill out event->other field.
13896
13897         * class.c: Fix warnings.
13898
13899         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
13900
13901 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
13902
13903         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
13904         walk which doesn't supply the IL offset.
13905
13906 2004-09-22  Martin Baulig  <martin@ximian.com>
13907
13908         * reflection.c (mono_reflection_setup_internal_class): If we're
13909         System.ValueType, System.Object or System.Enum, set
13910         `klass->instance_size' and create the vtable.
13911         (mono_reflection_create_internal_class): If we're an enum type,
13912         get the base class from our current corlib.
13913
13914 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
13915
13916         * reflection.h (MonoResolveTokenError): New type.
13917
13918         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
13919         icall.
13920
13921         * icall.c: Add an 'error' argument to the ResolveToken icalls.
13922
13923 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
13924
13925         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
13926         Support also calling constructors, but only for already allocated objects.
13927
13928 2004-09-17  Geoff Norton <gnorton@customerdna.com>
13929
13930         * reflection.c (type_get_qualified_name): If the klass is null
13931         return the typename to avoid a NullRefEx.
13932         (encode_cattr_value): Get the qualified name of the boxed type,
13933         not the underlying enumtype.  Fixes #62984.
13934
13935 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
13936
13937         * marshal.c: Fix problems with previous checkin.
13938
13939 2004-09-21    <vargaz@freemail.hu>
13940
13941         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
13942         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
13943
13944         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
13945
13946 2004-09-21  Geoff Norton <gnorton@customerdna.com>
13947
13948         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
13949         should only return a type for pointers, arrays, and passbyref types.
13950         Fixes bug #63841.
13951
13952 2004-09-21  Martin Baulig  <martin@ximian.com>
13953
13954         * domain.c (mono_debugger_check_runtime_version): New public
13955         function.
13956
13957         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
13958
13959 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
13960
13961         * reflection.c: Added missing sort to the declarative security 
13962         attributes table. MS implementation stops seeing the attributes if the
13963         token number regress in the table (as shown by ildasm and permview).
13964
13965 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
13966
13967         * object-internals.h (MonoReflectionModule): Add 'token' field.
13968         
13969         * reflection.c (mono_reflection_get_token): Add support for Module
13970         and Assembly.
13971         (mono_module_get_object): Set 'token' field.
13972         (mono_module_file_get_object): Set 'token' field.
13973
13974         * icall.c: Add new Assembly and Module icalls.
13975
13976         * appdomain.c: Bump corlib version.
13977
13978 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
13979
13980         * loader.h loader.c class.h class.c: Add helper functions for obtaining
13981         tokens of metadata objects.
13982
13983         * reflection.h reflection.c (mono_reflection_get_token): New function
13984         to obtain the token of a metadata object.
13985
13986         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
13987
13988 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
13989
13990         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
13991         
13992         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
13993
13994 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
13995
13996         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
13997         * object-internals.h: Added 3 MonoArray* members to MonoReflection
13998         AssemblyBuilder to access the permissions set in the class lib.
13999         * reflection.c: Added security attributes encoding step in 
14000         mono_image_build_metadata.
14001         * tabledefs.h: Added new security actions defined in 2.0:
14002         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
14003
14004 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
14005
14006         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
14007         macro parameter.
14008
14009 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
14010  
14011         * locales.c: nullify the ICU_collator member of CompareInfo when it is
14012           finalized. There where random SIGSEVs at program termination, when
14013           an object being finalized was trying to do a string comparison and
14014           the current culture was already finalized.
14015  
14016 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14017
14018         * threads.c: call thread_cleanup before finishing the thread if we get
14019         there.
14020
14021 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
14022
14023         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
14024         assemblies from the parent. Fixes #65665.
14025
14026 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
14027
14028         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
14029         modifiers.
14030
14031 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
14032
14033         * reflection.h: add prototype for mono_get_dbnull_object
14034         * reflection.c: add prototypes for get_default_param_value_blobs 
14035         and mono_get_object_from_blob for fussier compilers
14036
14037 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
14038  
14039         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
14040         false deadlock checks in class initialization.
14041  
14042 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
14043
14044         * image.c (mono_image_addref): Fix comment.
14045
14046         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
14047         possible.
14048
14049 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
14050
14051         * reflection.c (mono_param_get_objects): Modified to return
14052         ParameterInfo.DefaultValue object.
14053
14054         (get_default_param_value_blobs):
14055         (mono_get_object_from_blob):
14056         (mono_get_dbnull_object): New helper routines. 
14057
14058         * object.c (mono_get_constant_value_from_blob): New helper routine
14059         carved out from get_default_field_value ()
14060
14061         * object-internals.h (mono_get_constant_value_from_blob): Added
14062         function declaration.
14063
14064 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
14065
14066         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
14067         referenced assemblies. Fixes #62135.
14068
14069         * exception.h exception.c (mono_get_exception_file_not_found2): New
14070         helper function.
14071
14072 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
14073
14074         * class.h class.c: Add mono_type_get_underlying_type ().
14075
14076 2004-09-09  Geoff Norton <gnorton@customerndna.com>
14077
14078         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
14079         Fix GetTypes() to support dynamically created assemblies.
14080
14081 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
14082
14083         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
14084         
14085         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
14086         previous patch.
14087
14088         * reflection.h reflection.c loader.c: Allow dynamic construction of
14089         pinvoke methods. Fixes #65571.
14090         
14091         * reflection.c (mono_reflection_get_type): Revert previous change since
14092         it causes regressions.
14093
14094 2004-09-08  Martin Baulig  <martin@ximian.com>
14095
14096         * class.c (class_compute_field_layout): Don't call
14097         mono_class_layout_fields() for open generic instances.
14098
14099 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
14100         * threads.c appdomain.c: fix typo in GC macro
14101
14102 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14103
14104         * threads.c: don't call mono_thread_detach() in start_wrapper(),
14105         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
14106
14107 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
14108
14109         * image.c (mono_image_close): Applied patch from 
14110         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
14111         assembly is loaded multiple times from data.
14112         
14113         * image.c (mono_image_open): Fix warning.
14114
14115 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14116
14117         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
14118         once. Fixes #58334.
14119         
14120         * reflection.c (mono_reflection_create_runtime_class): Initialize
14121         klass->nested_classes. Fixes #61224.
14122
14123 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14124
14125         * threads.c: sched_yield() on exit, to allow threads to quit.
14126
14127 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14128
14129         * object.c (mono_unhandled_exception): Remove leftover debug code.
14130
14131 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
14132
14133         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
14134
14135 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
14136
14137         * marshal.c (emit_marshal_array): Really null terminate string arrays.
14138         
14139         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
14140
14141 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14142
14143         * marshal.c (emit_marshal_array): Null terminate string arrays.
14144         
14145         * marshal.c (raise_auto_layout_exception): Fix warning.
14146
14147         * reflection.c (mono_param_get_objects): Initialize the default value
14148         with DBNull.Value, not null. Fixes #62123.
14149
14150 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
14151
14152         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
14153         throw an exception with a cute explanation.
14154
14155 2004-09-06  Dick Porter  <dick@ximian.com>
14156
14157         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
14158         Close the new process's thread handle, as we don't use it.  The
14159         handle stays around forever otherwise.
14160
14161 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14162
14163         * object.c (arith_overflow): Fix warning.
14164
14165         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
14166         calling conventions in method refs. Fixes #65352.
14167
14168         * reflection.c: Fix warnings.
14169
14170 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
14171
14172         * icall.c: Add a new icall for Array.Clear
14173
14174 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
14175
14176         * object.c: When allocating an array, we have to throw
14177         an overflow exception if any of the lengths are < 0.
14178
14179 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
14180
14181         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
14182         properly. Also move implementation of string array marshalling to 
14183         managed code. Fixes #42316.
14184
14185 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14186
14187         * assembly.c: provide more information when loading an assembly fails.
14188
14189 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14190
14191         * filewatcher.c: don't expect the development fam package to be
14192         installed.
14193
14194 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
14195
14196         * marshal.c: Make a copy of the signature cookie since it will be
14197         freed by the caller.
14198         
14199         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
14200
14201         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
14202
14203         * metadata.c (mono_metadata_free_marshal_spec): New function to free
14204         marshal specs.
14205
14206         * marshal.c: More refactoring.
14207         
14208         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
14209         smaller functions.
14210
14211 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
14212
14213         * object.c: In mono_message_invoke, fill the output parameter array after
14214           calling the managed method (it was done before the call). This fixes
14215           bug #59299.
14216
14217 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14218
14219         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
14220         as well.
14221
14222 2004-09-02  Martin Baulig  <martin@ximian.com>
14223
14224         * class.c (mono_class_instance_size): Don't allow generic type
14225         definitions or open generic instances.
14226         (mono_class_array_element_size): If we're a value type, call
14227         mono_class_instance_size() on the original class.
14228
14229         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
14230         handle generic instances.
14231
14232         * mono-debug-debugger.c (write_type): Handle generic instances
14233         like classes.
14234
14235 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
14236
14237         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
14238         the allocation request fails. Fixes #65089.
14239
14240         * object.c (mono_runtime_free_method): Do not call mono_free_method.
14241         
14242         * object.c (mono_runtime_free_method): New function to free a dynamic
14243         method.
14244
14245         * marshal.c (mono_delegate_free_ftnptr): New function to free the
14246         delegate trampoline.
14247
14248         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
14249         with hasthis as dynamic,
14250
14251         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
14252
14253         * domain.c (mono_jit_info_table_remove): New function to remove an
14254         entry from the jit info table.
14255
14256         * class-internals.h (MonoMethod): Add 'dynamic' field.
14257
14258         * loader.c: Fix warnings.
14259
14260 2004-09-01  Martin Baulig  <martin@ximian.com>
14261
14262         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
14263         instead of mono_debugger_lock() because the latter one is a no-op
14264         unless running in the debugger.
14265
14266 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
14267
14268         * class.c (class_compute_field_layout): Classes with auto-layout or
14269         reference fields are not blittable.
14270         
14271 2004-09-01  Dick Porter  <dick@ximian.com>
14272
14273         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
14274         mono_image_get_filename() to get the assembly location.
14275
14276         * icall.c:
14277         * metadata.h: Fix compile warnings
14278
14279 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
14280
14281         * class.c (class_compute_field_layout): System.Object is blittable.
14282
14283         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
14284         as in/out. Fixes #59909.
14285
14286 2004-09-01  Martin Baulig  <martin@ximian.com>
14287
14288         * metadata.h (MONO_TYPE_ISREFERENCE): Call
14289         mono_metadata_generic_inst_is_valuetype() if we're a generic
14290         instance to check whether our underlying type is a reference type.
14291
14292 2004-09-01  Martin Baulig  <martin@ximian.com>
14293
14294         * metadata.c (mono_type_size): If we're a generic instance, call
14295         mono_class_value_size() for value types.
14296
14297 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
14298
14299         * marshal.c: Implement more custom marshalling functionality. Fixes
14300         #64915.
14301
14302 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14303
14304         * mono-debug.c, debug-mono-symfile.c: add some locking love.
14305
14306 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
14307
14308         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
14309
14310         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
14311
14312         * icall.c: Fix some warnings.
14313
14314         * threads.c (abort_appdomain_thread): Fix unref errors.
14315         (mono_thread_current): Fix THREAD_DEBUG define.
14316
14317 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
14318
14319         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
14320
14321         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
14322
14323 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
14324
14325         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
14326         string arrays.
14327
14328 2004-08-28  Martin Baulig  <martin@ximian.com>
14329
14330         * metadata.c
14331         (mono_metadata_generic_inst_is_valuetype): New public function.
14332
14333         * metadata.h (MONO_TYPE_ISSTRUCT): Call
14334         mono_metadata_generic_inst_is_valuetype() if we're a generic
14335         instance to check whether our underlying type is a valuetype.
14336
14337 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14338
14339         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
14340         #63768.
14341
14342 2004-08-25  Martin Baulig  <martin@ximian.com>
14343
14344         * loader.c (mono_get_method_from_token): Abstract methods can also
14345         be generic and thus have type parameters.
14346
14347         * metadata-internals.h
14348         (MonoDynamicImage): Added `GPtrArray *gen_params'.
14349
14350         * reflection.c (mono_image_get_generic_param_info): Don't create a
14351         metadata row, just add an entry to the `gen_params' array.
14352         (build_compressed_metadata): Sort the `gen_params' array and then
14353         actually create the metadata.
14354
14355 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14356
14357         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
14358
14359 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14360
14361         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
14362
14363 2004-08-24  Martin Baulig  <martin@ximian.com>
14364
14365         * class.cs (mono_class_is_subclass_of): Like an interface, a
14366         generic instance also derives from System.Object.
14367
14368 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14369
14370         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
14371         custom modifiers to be in any order. Fixes #61990.
14372
14373 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14374
14375         * object.c: Register mono_object_new_fast icall.
14376         
14377         * object.c (mono_class_get_allocation_ftn): Return to calling
14378         mono_object_new_fast, since it seems faster to compute the object 
14379         size in unmanaged code than passing it as a parameter.
14380
14381         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
14382
14383         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
14384         this function with Boehm as the oom handler, so we don't have to check
14385         the result of GC_malloc.
14386
14387         * object.c: Remove checks for oom.
14388
14389         * object.h object.c (mono_class_get_allocation_ftn): New function to
14390         return the icall which can be used to allocate an instance of a given
14391         class. 
14392
14393         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
14394
14395         * class-internals.h: Add 'enabled' field.
14396
14397 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
14398
14399         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
14400
14401 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
14402         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
14403         value 0x0010.
14404
14405 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14406
14407         * appdomain.c: use the Tls function for appdomain too,
14408         at Zoltan's request. Actually return in mono_context_get
14409
14410         * appdomain.c, profiler.c, threads.c: use __thread
14411
14412 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14413
14414         * appdomain.c threads.c: Call GC_CreateThread on windows.
14415
14416         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
14417         multiple libraries since this don't work on windows.
14418
14419 2004-08-18  Martin Baulig  <martin@ximian.com>
14420
14421         * class-internals.h
14422         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
14423         MonoMethodHeader.
14424
14425         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
14426         MonoMethodNormal since we also need it for abstract and interface
14427         methods.
14428
14429         * reflection.c
14430         (build_compressed_metadata): Sort the GenericParam table.
14431         (mono_image_create_token): Added `gboolean create_methodspec'
14432         argument; this is false when generating a MethodImpl token.
14433         (reflection_methodbuilder_to_mono_method): Abstract and interface
14434         methods may also have generic parameters.
14435
14436 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14437
14438         * appdomain.c: thread local alloc
14439
14440 2004-08-17  Martin Baulig  <martin@ximian.com>
14441
14442         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
14443
14444         * icall.c
14445         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
14446         argument.
14447
14448         * class.c (mono_type_get_full_name): New public function.
14449         (mono_type_get_name): Don't include the type arguments.
14450
14451 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14452
14453         * Makefile.am: Build static versions of libmetadata and libmonoruntime
14454         for inclusion into the mono executable.
14455
14456 2004-08-16  Martin Baulig  <martin@ximian.com>
14457
14458         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
14459         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
14460
14461 2004-08-14  Martin Baulig  <martin@ximian.com>
14462
14463         * class.c (dup_type): Also copy the `byref' field.
14464
14465 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14466
14467         * reflection.c (create_dynamic_mono_image): Revert the last change 
14468         since it breaks bootstrap.
14469
14470 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14471
14472         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
14473
14474         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
14475         not free them with g_free.
14476
14477 2004-08-11  Martin Baulig  <martin@ximian.com>
14478
14479         * reflection.c (mono_reflection_setup_internal_class): Also call
14480         mono_class_setup_mono_type() if we already have a `tb->type.type'.
14481
14482 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
14483
14484         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
14485         called during default (first) AppDomain creation. Keep track of
14486         Evidence when loading assemblies.
14487
14488 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
14489
14490         * opcodes.c, opcodes.h: reduce runtime relocations.
14491
14492 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
14493
14494         * culture-info.h, locales.c: fixes and chages to sue the new
14495         optimized format of the locale data.
14496         * culture-info-tables.h: regenerated.
14497
14498 2004-08-06  Geoff Norton <gnorton@customerdna.com>
14499         
14500         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
14501
14502 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
14503
14504         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
14505         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
14506         * domain-internals.h: icall declaration.
14507         * icall.c: icall registration.
14508         * object-internals.h: New fields in MonoAssembly for CAS.
14509
14510 2004-08-05  Duncan Mak  <duncan@ximian.com>
14511
14512         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14513         CEE_LDELEM_ANY.
14514
14515 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
14516
14517         * reflection.c: fix to deal with object[] arrays in custom ctors
14518         (bug #62550).
14519
14520 2004-08-05  Martin Baulig  <martin@ximian.com>
14521
14522         * class.c (mono_class_array_element_size): Added support for
14523         generic instances and correctly handle "recursive" types.
14524
14525 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14526
14527         * assembly.c: Fix warnings.
14528
14529 2004-08-04  Martin Baulig  <martin@ximian.com>
14530
14531         * class.c
14532         (mono_type_get_name_recurse): Added `gboolean include_arity'
14533         argument specifying whether or not we should include the generic
14534         arity in the type name.
14535         (_mono_type_get_name): New static function.
14536         (mono_class_setup_vtable): If we're a generic instance, don't
14537         include the generic arity in the names of explicit method
14538         implementations.        
14539
14540 2004-08-03  Martin Baulig  <martin@ximian.com>
14541
14542         * class.c (mono_type_get_name_recurse): Enclose the generic type
14543         arguments in `<', '>'.
14544
14545 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
14546
14547         * gc.c: make GC warning messages use the trace API, they are just
14548         noise to most of the users.
14549
14550 2004-08-03  Martin Baulig  <martin@ximian.com>
14551
14552         * debug-mono-symfile.c (read_string): Correctly read the string.
14553
14554 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14555
14556         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
14557         
14558         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
14559         icalls.
14560         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
14561
14562 2004-07-30  Martin Baulig  <martin@ximian.com>
14563
14564         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
14565         Reflect latest symbol writer changes.   
14566
14567 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
14568
14569         * object.c: always create an object if null is passed
14570         to Invoke() where a valuetype is expected.
14571
14572 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14573
14574         * marshal.c (mono_marshal_init): make managed
14575         signatures match native ones better for 64bits.
14576
14577 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14578
14579         * appdomain.c: hack to build correctly the private bin path on windows.
14580         Fixes bug #61991.
14581
14582 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14583
14584         * assembly.c: Load mscorlib from the correct framework directory
14585           (mono/<version>/mscorlib.dll).
14586         * appdomain.h: Added prototypes for new functions.
14587         * internals.h: Added some prototypes.
14588         * domain.c: When initializing the runtime, get from the executable and
14589           the configuration files the runtime version that the app supports.
14590           Added support methods for reading app.exe.config. Added list of versions
14591           supported by the JIT. Added two new methods: mono_init_from_assembly,
14592           which initializes the runtime and determines the required version from
14593           the provided exe file, and mono_init_version, which initializes
14594           the runtime using the provided version.
14595         * icall.c: Get machine.config from version-specific directory.
14596         * reflection.c: When generating an image, embed the version number
14597           of the current runtime.
14598
14599 2004-07-28  Dick Porter  <dick@ximian.com>
14600
14601         * socket-io.c
14602         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
14603         returned sockaddr size before creating the remote address object.
14604         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
14605         61608.
14606
14607 2004-07-28  Dick Porter  <dick@ximian.com>
14608
14609         * locales.c (string_invariant_compare_char): Fix invariant char
14610         compares between upper and lower cases.  Fixes bug 61458.
14611
14612 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
14613         
14614         * marshal.c: actually cache stelem.ref wrappers.
14615         
14616 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14617
14618         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
14619         sections and remove the mono_cli_rva_map () function.
14620
14621 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14622
14623         * debug-mono-symfile.c: fix one more endianess issue, from a patch
14624         by Geoff Norton (<gnorton@customerdna.com>).
14625
14626 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
14627
14628         * class.c: fix class loads for pointer types (typeof(int) !=
14629         typeof(int*)).
14630
14631 2004-07-27  Martin Baulig  <martin@ximian.com>
14632
14633         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
14634         reading the debugging information from an external ".mdb" file.
14635
14636 2004-07-24  Martin Baulig  <martin@ximian.com>
14637
14638         * reflection.c (mono_image_get_type_info): Only write a class
14639         layout entry if we actually have a size or a packing size.
14640
14641 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
14642
14643         * reflection.c (type_get_fully_qualified_name): 
14644         insert cast to get type checking of ?: with non-gcc compilers
14645
14646 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
14647
14648         * rand.c: use g_getenv for both lookups of
14649         MONO_EGD_SOCKET
14650
14651 2004-07-17  Martin Baulig  <martin@ximian.com>
14652
14653         * reflection.c (mono_reflection_bind_generic_method_parameters):
14654         Set `gmethod->reflection_info'.
14655
14656 2004-07-17  Martin Baulig  <martin@ximian.com>
14657
14658         * class.c (mono_class_create_from_typedef): Insert the newly
14659         created class into the hash table before computing the interfaces
14660         since we could be called recursively.
14661
14662 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14663
14664         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
14665         function to implement stelem.ref in managed code
14666         * class-internals.h, debug-helpers.c: a new wrapper type
14667         for the above.
14668
14669 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
14670
14671         * gc.c: allow GC handles to work even when no GC is compiled in.
14672         Fix part of bug #61134 (GetAddrOfPinnedObject).
14673
14674 2004-07-13  Peter Williams  <peter@newton.cx>
14675  
14676         * process.c (complete_path): Make sure we don't attempt to execute
14677         directories.
14678  
14679 2004-07-12  Geoff Norton <gnorton@customerdna.com>
14680
14681         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
14682           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
14683           and will add/subtract the hour if needed
14684
14685 2004-07-12  Martin Baulig  <martin@ximian.com>
14686
14687         * reflection.c (mono_field_get_object): If we have
14688         `field->generic_info', take the attributes from
14689         `field->generic_info->generic_type'.    
14690
14691 2004-07-12  Martin Baulig  <martin@ximian.com>
14692
14693         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
14694         This function must be called before initializing the runtime.
14695         (mono_debug_init_1): New function; call this after initializing
14696         the runtime, but before loading the assembly.  It tells the
14697         debugger to load corlib and the builtin types.
14698
14699         * mono-debug-debugger.c: Did some larger changes in the debugging
14700         code; support recursive class declarations, make sure we actually
14701         add all classes.
14702
14703 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14704
14705         * debug-helpers.c: undo my previous patch and fixed the real issue in
14706         ../mini/exceptions-x86.c
14707
14708 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14709
14710         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
14711         when no HOME env. variable was set and a NullRef was thrown in a .cctor
14712         called from other .cctors.
14713
14714 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
14715
14716         * loader.c: Removed the mono_loader_wine_init hack now that we are
14717         doing a managed version of Windows.Forms.
14718
14719 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14720
14721         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
14722         threadpool.c, threads.c: remove static data from rootset.
14723
14724 2004-07-09  Dick Porter  <dick@ximian.com>
14725
14726         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
14727         Don't do any more processing if the matched length was 0.  It was
14728         increasing the size of the string before.  Fixes bug 61167.
14729
14730 2004-07-09  Dick Porter  <dick@ximian.com>
14731
14732         * socket-io.h:
14733         * socket-io.c
14734         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14735         Add support for SO_PEERCRED if its available.
14736
14737 2004-07-09  Peter Bartok <pbartok@novell.com>
14738         * loader.c: winelib.exe.so error message is now only displayed if
14739         MONO_DEBUG is set. To help us avoid questions when people are trying
14740         out the new Managed.Windows.Forms.
14741
14742 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14743
14744         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
14745         for isinst and castclass wrappers.
14746
14747         * class-internals.h icall.c: Move registration and lookup of JIT icalls
14748         to libmetadata from the JIT, so they could be used by the marshalling
14749         code and the interpreter.
14750
14751         * marshal.c: Register marshalling related JIT icalls here instead of
14752         in mini.c. Use CEE_MONO_ICALL instead of the family of 
14753         CEE_MONO_PROC<x> opcodes to call marshalling functions.
14754
14755         * metadata.h: Remove unneeded marshalling conversions.
14756
14757         * opcodes.c: Update for new opcodes.
14758         
14759 2004-07-08  Martin Baulig  <martin@ximian.com>
14760
14761         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
14762         (mono_debug_get_domain_data): Make this function static.
14763
14764 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
14765
14766         * gc.c, object.h: add nice GC handle API for embedders.
14767
14768 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14769
14770         * reflection.c: more changes for the new api
14771
14772         * object.c: When we reflect on a field w/ a constant value, it
14773         will not have a memory location, so we must access metadata. Also,
14774         allow easier reading of strings so that we can read them from
14775         the constant data.
14776
14777         * class.c (mono_class_layout_fields): no need for literal fields here.
14778
14779         * class-internals.h: api changes for const fields
14780
14781         * icall.c (ves_icall_get_enum_info): use new apis for const fields
14782
14783 2004-07-06  Martin Baulig  <martin@ximian.com>
14784
14785         * mono-debug.h: Increment version number to 44.
14786
14787         * mono-debug.c (mono_debug_add_wrapper): The second argument is
14788         now a gpointer, rewrote this whole method.
14789
14790         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
14791         function.  Add information about the wrapper in a new "misc table".
14792
14793         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
14794         for the new misc table.
14795
14796 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14797
14798         * metadata-internals.h image.c: Add a cache for helper signatures.
14799
14800         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
14801
14802 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14803
14804         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
14805         delegates from a delegate. Fixes #61033.
14806         
14807         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
14808         marshalling of stringbuilder arrays. Fixes #59900.
14809
14810 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14811
14812         * icall.c: Add EnumBuilder:setup_enum_type icall.
14813
14814 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14815
14816         * icall.c: Added a new icall for the property version of
14817         OffsetOfStringData.
14818
14819 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14820
14821         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
14822         it has a constant size across platforms.
14823
14824         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
14825         stack trace.
14826
14827 2004-06-29  Martin Baulig  <martin@ximian.com>
14828
14829         * mono-debug.c (mono_debug_add_method): Protect the whole function
14830         in mono_debugger_lock(), not just parts of it.
14831
14832 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14833
14834         * reflection.c: make sure padding bytes in heaps are zeroed.
14835
14836 2004-06-24  David Waite  <mass@akuma.org>
14837
14838         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
14839         image.c, loader.c, locales.c, marshal.c, metadata.c,
14840         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
14841         string-icalls.c, threads.c: change to C90-style comments from C99 /
14842         C++ -style
14843
14844 2004-06-24  Dick Porter  <dick@ximian.com>
14845
14846         * threads.c
14847         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
14848         return createdNew.  Fixes bug 60412.
14849
14850         * threads-types.h: 
14851         * icall.c: Add createdNew parameter to CreateMutex icall
14852
14853 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14854
14855         * reflection.c, object-internals.h: save default value in params.
14856
14857 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14858
14859         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
14860         no need to build a new path combining that with the application base.
14861         Fixes bug #60442.
14862
14863 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
14864
14865         * reflection.c: fixed minor standard compliance issues.
14866
14867 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
14868
14869         * reflection.c: fixed issue with encoding some custom attributes
14870         (arrays in properties and fields, bug #60411).
14871
14872 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14873
14874         * reflection.c: fix start address when copying the public key token.
14875
14876 2004-06-23  Martin Baulig  <martin@ximian.com>
14877
14878         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
14879         the `exc' object in a static object to put it into the GC's root set.
14880
14881 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
14882
14883         * reflection.c: make mono_reflection_setup_internal_class ()
14884         callable a second time to setup a new parent class.
14885
14886 2004-06-23  Dick Porter  <dick@ximian.com>
14887
14888         * threads.c: Check for WAIT_IO_COMPLETION return values.
14889
14890 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
14891
14892         * appdomain.c: Removed the g_free on the public key token. Now copy 
14893         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
14894         * assembly.c: Added public key token string value when loading 
14895         assemblies. Fix bug #60439.
14896         * icall.c: Added missing informations (like public key) in 
14897         GetReferencedAssemblies. Fix #60519.
14898         * image.h: Changed definition for public key token from const char*
14899         public_tok_value to guchar public_key_token [17];
14900         * reflection.c: Updated for changes to public key token.
14901
14902 2004-06-22  Lluis Sanchez Gual
14903
14904         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
14905         for the field in base classes.
14906
14907 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
14908
14909         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
14910         mark headers as not supported, they are installed only for use by the
14911         debugger.
14912
14913 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
14914
14915         * *.c, *.h: avoid namespace pollution in public headers.
14916
14917 2004-06-21  Martin Baulig  <martin@ximian.com>
14918
14919         * exception.c (mono_get_exception_security): It's in
14920         "System.Security", not in "System".
14921
14922         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
14923         the exception classes.
14924
14925 2004-06-21  Martin Baulig  <martin@ximian.com>
14926
14927         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
14928         Protect the exception object from being finalized.
14929
14930 2004-06-21  Martin Baulig  <martin@ximian.com>
14931
14932         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
14933         public function.
14934
14935 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
14936
14937         * reflection.c: Load the assembly in mono_reflection_type_from_name,
14938         if it was not loaded before. Fix parts of #60439.
14939
14940 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
14941
14942         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
14943         code that was broken since Ben's change: wrappers are now
14944         dependent on the method signature only again.
14945
14946 2004-06-21  Martin Baulig  <martin@ximian.com>
14947
14948         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
14949         added interface support.
14950
14951 2004-06-21  Martin Baulig  <martin@ximian.com>
14952
14953         * class.c (mono_vtable_get_static_field_data): New public method.
14954
14955 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
14956
14957         * filewatcher.c : Windows build fix to be compliant with API changes.
14958
14959 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14960
14961         * class.h, class.c: more accessors.
14962         * metadata.h, metadata.c: prepare for hiding MonoType and
14963         MonoMethodSignature: people should use the accessors from now on
14964         outside of the tree.
14965
14966 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14967
14968         * *.c, *.h: more API cleanups.
14969
14970 2004-06-18  Jackson Harper  <jackson@ximian.com>
14971
14972         * assembly.c: Trace loading assemblies.
14973         * loader.c: Trace loading native libraries.
14974         * mono-config.c: Trace loading config files.
14975         
14976 2004-06-18  Dick Porter  <dick@ximian.com>
14977
14978         * locales.c: Tell ICU the lengths of strings, it can cope with
14979         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
14980
14981 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14982
14983         * image.c: swapped name/filename;
14984
14985 2004-06-18  Martin Baulig  <martin@ximian.com>
14986
14987         * mono-debug-debugger.c (write_class): Write the parent class at
14988         the end of the header.
14989
14990 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
14991
14992         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
14993
14994 2004-06-17  Raja R Harinath  <rharinath@novell.com>
14995
14996         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
14997         (bundle_obj): New conditional define.
14998         (BUILT_SOURCES): Remove.
14999         ($(bundle_srcs)): Make parallel-make safe.
15000         (libmonoruntime_la_LIBADD): Make unconditional.
15001         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
15002         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
15003
15004 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
15005
15006         * culture-info-tables.h: It was inconsistent with the latest
15007           supp info files.
15008
15009 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
15010
15011         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
15012         be loaded.
15013
15014         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
15015         with gcc 2.95.
15016
15017 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
15018
15019         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
15020         cleaned up public header threads.h.
15021
15022 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15023
15024         * Makefile.am, *.c, *.h: more API cleanups.
15025
15026 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15027
15028         * Makefile.am: removed monosn from compilation.
15029         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
15030         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
15031         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
15032         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
15033         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
15034         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
15035
15036 2004-06-15  Jackson Harper  <jackson@ximian.com>
15037
15038         * assembly.c: Make locales lower case when searching the GAC for
15039         assemblies. gacutil will always make locales lowercase when
15040         installing so this effectively makes them case insensitive.
15041         
15042 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
15043
15044         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
15045         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
15046           parameter which allows to choose whether the wait can be interrupted or 
15047           not. Also added the method mono_monitor_enter(), which locks the monitor
15048           using an infinite wait and without allowing interruption.
15049           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
15050           interrupted.
15051         * object.h: Added new fields in MonoThread. suspend_event holds the event
15052           used to susped/resume the thread. synch_lock is the lock object to use for
15053           modifying the thread state.
15054         * threads.c: Use the new synch_lock object for locking, instead of "this",
15055           which can generate deadlocks.
15056           Moved thread state change in Thread.Sleep and Thread.Join from managed
15057           to unmanaged code. This avoids a deadlock when the thread was suspended
15058           just after acquiring the thread lock.
15059           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
15060           Implemented Thread.Suspend using an event instead of ThreadSuspend,
15061           which is not fully implemented in the io-layer.
15062         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
15063
15064 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
15065
15066         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
15067         threads-types.h: more API cleanups.
15068
15069 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
15070
15071         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
15072         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
15073         threadpool.c, threads.c: first pass at the exported API cleanup.
15074
15075 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15076
15077         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
15078
15079 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15080
15081         * icall.c: added internalGetHome.
15082
15083 2004-06-14  Dick Porter  <dick@ximian.com>
15084
15085         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
15086         possible to return successfully when '.' or '..' were the only
15087         entries in a directory, but were skipped.  The MonoIOStat was not
15088         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
15089         Fixes bug 59574.
15090
15091 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15092
15093         * reflection.c: make binaries run on .Net 1.1 by default.
15094
15095 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
15096
15097         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
15098
15099 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
15100
15101         * marshal.c: keep track of struct size with explicit layout
15102         (bug #59979).
15103
15104 2004-06-12  Martin Baulig  <martin@ximian.com>
15105
15106         * mono-debug-debugger.c: Comment out a debugging g_message().
15107
15108 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
15109
15110         * reflection.c, reflection.h: do not free custom attrs that are cached.
15111         * icall.c: use braces to make code clearer.
15112
15113 2004-06-11  Martin Baulig  <martin@ximian.com>
15114
15115         * class.h (MonoInflatedField): New type.
15116         (MonoClassField): Replaced `MonoType *generic_type' with
15117         `MonoInflatedField *generic_info'.
15118
15119         * icall.c
15120         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
15121
15122 2004-06-11  Martin Baulig  <martin@ximian.com>
15123
15124         * reflection.c (mono_image_create_method_token): Correctly encode
15125         varargs methods.
15126
15127 2004-06-11  Martin Baulig  <martin@ximian.com>
15128
15129         * metadata.c (mono_metadata_parse_method_signature): When parsing
15130         a MethodDef which has VarArgs, also set sentinelpos if we don't
15131         have any parameters.
15132
15133 2004-06-11  Martin Baulig  <martin@ximian.com>
15134
15135         * verify.c (mono_method_verify): In CEE_CALL, use
15136         mono_method_get_signature() to get the method's signature, unless
15137         we're a PInvoke method.
15138
15139 2004-06-10  Jackson Harper  <jackson@ximian.com>
15140
15141         * assembly.c: Use <path>/lib/mono/gac for the extra paths
15142         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
15143         logical name as the supplied path is just a prefix to the gac not
15144         the direct path to it.
15145         
15146 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
15147
15148         * reflection.c: make the token for a created method match
15149         the token of the MethodBuilder it was created from
15150         (IKVM requires this behaviour now).
15151
15152 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
15153
15154         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
15155         reflection.c, socket-io.c: leak fixes.
15156
15157 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15158
15159         * icall.c: handle sentinel pos in vararg methods in position different
15160         from 0.
15161
15162 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15163
15164         * culture-info-tables.h: freshly generated.
15165
15166 2004-06-09  Martin Baulig  <martin@ximian.com>
15167
15168         * loader.c (mono_get_method_constrained): Call `mono_class_init
15169         (constrained_class)'.   
15170
15171 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
15172
15173         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
15174         any methods. Fixes #59629.
15175
15176 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
15177
15178         * culture-info-tables.h: reflecting locale-builder updates.
15179
15180 2004-06-08  Dick Porter  <dick@ximian.com>
15181
15182         * object.h:
15183         * locales.c: Fixed compile warnings, including a real bug in
15184         CompareInfo_internal_compare.
15185         
15186 2004-06-08  Dick Porter  <dick@ximian.com>
15187
15188         * locales.c
15189         (ves_icall_System_Globalization_CompareInfo_internal_index):
15190         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
15191         Double-check the resuls of usearches, because ICU currently
15192         ignores most of the collator settings here.  Fixes bug 59720.
15193         
15194 2004-06-08  Dick Porter  <dick@ximian.com>
15195
15196         * locales.c
15197         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
15198         Fix memory leak and segfault-causing typo.  No idea how this one
15199         lasted so long without being noticed.
15200
15201 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
15202
15203         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
15204         any methods. Fixes #59629.
15205
15206 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15207
15208         * assembly.c:
15209         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
15210         own the critical section before). Removed dead code (that's done
15211         in the preload hook).
15212
15213         (mono_assembly_load_with_partial_name): call the preload hook.
15214
15215 2004-06-08  Martin Baulig  <martin@ximian.com>
15216
15217         * metadata.c (mono_metadata_signature_alloc): Default
15218         `sentinelpos' to -1.
15219
15220         * reflection.c (mono_image_get_array_token): Likewise.
15221
15222 2004-06-08  Martin Baulig  <martin@ximian.com>
15223
15224         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
15225
15226         * metadata.c (mono_metadata_parse_method_signature): When parsing
15227         a MethodDef which has VarArgs, set sentinelpos.
15228
15229         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
15230         `gint16' since we're using -1 for non-varargs methods.
15231
15232         * reflection.c
15233         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
15234         (method_encode_signature): Added varargs support.
15235         (method_builder_encode_signature): Likewise.
15236         (mono_image_get_varargs_method_token): New static method.
15237         (mono_image_create_method_token): New public method; this is
15238         called via an icall instead of mono_image_create_token() when
15239         calling a varargs method.       
15240
15241 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
15242
15243         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
15244
15245 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
15246
15247         * culture-info-tables.h : Reflecting the latest locale-builder that
15248           fixed empty array representation ({} to {0}).
15249
15250 2004-06-07  Jackson Harper  <jackson@ximian.com>
15251
15252         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
15253         looking up extra gac paths. This allows MONO_GAC_PATH to act
15254         exactly like a prefix.
15255         
15256 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
15257
15258         * reflection.c (mono_reflection_type_from_name): Make a copy of the
15259         type name before modifying it. Fixes #59405.
15260
15261 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
15262
15263         * culture-info.h: added fields for "all datetime patterns".
15264         * locales.c: (  ves_icall_System_Globalization_CultureInfo
15265           _construct_datetime_format ()): fill xxx_patterns fields.
15266         * object.h: added fields for "all datetime patterns" to
15267           MonoDateTimeFormatInfo.
15268         * culture-info-tables.h: reflecting locale-builder updates.
15269
15270 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
15271
15272         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
15273         the event has no add and remove methods. Fixes #59629.
15274
15275 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
15276
15277         * object.c: Fixed possible integer overflow when allocating large
15278         strings.
15279
15280 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
15281
15282         * culture-info-tables.h: reflecting locale-builder updates.
15283
15284 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
15285
15286         * culture-info-tables.h: reflecting locale-builder updates.
15287
15288 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
15289
15290         * culture-info-tables.h: reflecting locale-builder updates.
15291
15292 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
15293
15294         * threads.c: Made Thread.Sleep abortable.
15295
15296 2004-06-02  Martin Baulig  <martin@ximian.com>
15297
15298         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
15299
15300         * debug-mono-symfile.h: Bumped symbol file version number to 37.
15301
15302 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
15303
15304         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
15305
15306 2004-05-30  Jackson Harper  <jackson@ximian.com>
15307
15308         * reflection.c: Do not hardcode assembly versions or public key
15309         tokens anymore. All of this except the corlib section was dead
15310         code anyways.
15311         
15312 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
15313
15314         * object.c (mono_runtime_invoke_array): Automatically create boxed
15315         objects for byref valuetypes if needed. Fixes #59300.
15316         
15317         * object.c (mono_method_return_message_restore): Handle 
15318         MONO_TYPE_OBJECT as well.
15319
15320 2004-05-28  Jackson Harper  <jackson@ximian.com>
15321
15322         * reflection.c: The modified type encoding was causing build
15323         problems. Reverted for now.
15324         
15325 2004-05-28  Jackson Harper  <jackson@ximian.com>
15326
15327         * reflection.c/h: Take an assembly ref so that we dont create
15328         fully qualified names when encoding types in the same assembly as
15329         the custom attribute being emitted.
15330         * appdomain.c: Increment version number.
15331         
15332 2004-05-26  Duncan Mak  <duncan@ximian.com>
15333
15334         * icall.c
15335         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
15336         Set the full version number (major, minor, build, revision).
15337
15338 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
15339
15340         * marshal.c (emit_struct_conv): increment src/dst after blit
15341         (mono_marshal_get_managed_wrapper,
15342         mono_marshal_get_native_wrapper): make sure we have marshalling
15343         info before marshalling params (info computation affects
15344         blittable)
15345
15346         * class.c (class_compute_field_layout): correctly deal with
15347         blittable
15348         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
15349         value types (as per what windows dows by default)
15350         (mono_class_setup_mono_type): System.ValueType is blittable
15351         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
15352         blittable
15353
15354         * marshal.c (mono_marshal_load_type_info): flag types  as
15355         non-blittable if the native layout doesn't match the managed
15356         layout
15357
15358 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15359
15360         * appdomain.c: don't add stuff in the private search path that is
15361         above the application base. If application base is not set, there's
15362         no private search path.
15363
15364 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
15365
15366         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
15367         byref struct arguments in native->managed marshalling.
15368
15369 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
15370
15371         * marshal.c (mono_marshal_get_runtime_invoke): correctly
15372         cache methods using signature (special case for methods
15373         that are value type or string class)
15374         
15375         * image.c (mono_image_close): clean up allocated GSList's
15376         in runtime_invoke_cache.
15377
15378 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15379
15380         * mono-config.c: set the correct path for mono_cfg_dir on windows when
15381         there's no MONO_CFG_DIR environment variable defined.
15382
15383 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15384
15385         * threads.c: windows version must be >= 0x0500 to include OpenThread.
15386
15387 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
15388
15389         * threadpool.c: Really wait for 500ms after the async call, even if the wait
15390           is interrumped.
15391         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
15392           before waiting for it, and call CloseHandle after the wait to unref it.
15393           This will make sure that handles are not disposed too early.
15394
15395 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15396
15397         * appdomain.c:
15398         * appdomain.h:
15399         * icall.c: removed
15400         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
15401         needed now.
15402
15403         * object.c: se the application_base only for the domain that runs
15404         Main. Fixes bug #59216,
15405
15406 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15407
15408         * appdomain.c:
15409         * object.c: only the domain in which Main is run have
15410         SetupInformation.ConfigurationFile set, so moved a few lines from
15411         appdomain.c to object.c.
15412
15413 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15414
15415         * appdomain.c: we tried to load [name].(dll|exe), but according
15416         to bug #57710, we must also try [culture]/[name].(dll|exe) and
15417         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
15418         There's a test case attached to bug #58922.
15419
15420 2004-05-27  Dick Porter  <dick@ximian.com>
15421
15422         * icall.c:
15423         * file-io.c: Implemented icalls for locking and unlocking regions
15424         in a file.
15425         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
15426         FALSE on error (fixes both compiler warning and real bug.)
15427
15428 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
15429
15430         * culture-info-tables.h: reflecting locale-builder updates.
15431
15432           (Added missing ChangeLog entry for 05/26)
15433
15434 2004-05-27  Jackson Harper  <jackson@ximian.com>
15435
15436         * locales.c: Fix some cut and paste errors.
15437         
15438 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15439
15440         * mono-config.c: set the correct path for config. directory on windows.
15441
15442 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
15443
15444         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
15445           on win32.
15446
15447 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15448
15449         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
15450         from pinvoke functions.
15451         
15452         * marshal.c (mono_ftnptr_to_delegate): Implement this.
15453
15454 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
15455
15456         * culture-info-tables.h: reflecting locale-builder updates.
15457
15458 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
15459
15460         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
15461         #59086.
15462
15463 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
15464
15465         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
15466         * icall.c: Modified icalls for RNG.
15467         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
15468         Windows (CryptoAPI).
15469
15470 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15471
15472         * locales.c: Fix build.
15473
15474 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
15475
15476         * culture-info-tables.h: reflecting locale-builder updates.
15477
15478 2004-05-25  Jackson Harper  <jackson@ximian.com>
15479
15480         * locales.c: When creating the current culture use the $LANGs
15481         specific culture. So DateTimeFormat and NumberFormat entries are created.
15482         
15483 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
15484
15485         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
15486         a char array as parameter.
15487
15488 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
15489
15490         * image.c: In mono_image_open(), always use an absolute path name to
15491           look for already loaded images.
15492
15493 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
15494
15495         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
15496         missing in the windows build (like older cygwin include files).
15497
15498 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
15499
15500         * icall.c: Fixed check for possible integer overflow in Buffer_
15501         BlockCopy icall. Replaced comments style // by /* */.
15502
15503 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
15504
15505         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
15506         
15507         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
15508         check after MONO_VTADDR. Fixes pinvoke2.exe.
15509
15510         * marshal.h marshal.c metadata.h: Add beginnings of support for
15511         ftnptr -> delegate marshalling.
15512
15513 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
15514
15515         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
15516         * threads.c: Fix warnings.
15517
15518 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
15519
15520         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
15521         * icall.c: Registered icalls for Suspend and Resume.
15522         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
15523           Thread.Abort.
15524         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
15525         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
15526         * process.c: Use WaitForSingleObjectEx.
15527         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
15528           checkpoints.
15529         * threads.c, threads.h: Make use of new Ex wait methods. Improved
15530           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
15531           for Suspend and Resume. Added new mono_thread_stop, used for stoping
15532           background threads. Added basic support for Abort in Windows.
15533           Start new threads using a managed delegate invoke wrapper. This wrapper
15534           has an interruption checkpoint that is needed since an interruption
15535           can be requested before the thread leaves the unmanaged code that starts 
15536           the thread.
15537         * marshal.c: Added interruption checkpoint after every native call, and
15538           also before managed calls for wrappers called from unmanaged code to
15539           go into managed code.
15540         * object.h: Added new field in MonoThread to keep track of interruption
15541           requests.
15542
15543 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
15544
15545         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
15546         calls.
15547
15548 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15549
15550         * appdomain.c:
15551         * assembly.c:
15552         * gc.c:
15553         * locales.c:
15554         * mono-config.c:
15555         * rand.c: getenv -> g_getenv (windows!)
15556
15557         * process.c: complete_path is also used on non-windows platforms.
15558
15559 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15560
15561         * icall.c: new signature for Process_Start.
15562
15563         * process.[ch]: new signature for Process_Start. If we're on windows
15564         and UseShellExecute is false, we have to search for the program by
15565         ourselves if we don't get a full path.
15566
15567 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
15568
15569         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
15570         marshalling and call CleanUpNativeData if needed. Fixes #58646.
15571
15572 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15573
15574         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
15575         Fixes bug #58373.
15576
15577 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15578
15579         * process.c: use double quotes to quote program name and arguments on
15580         windows. Fixes bug #58575.
15581
15582 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15583
15584         * file-io.c: don't return "." and ".." when using windows Find*File.
15585
15586 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
15587
15588         * marshal.c: Don't pass wrappers to message init because method 
15589         addressed used to lookup metadata. part of remoting[2|3] fix.
15590
15591 2004-05-15  Jackson Harper  <jackson@ximian.com>
15592
15593         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
15594         path is essentially the same as MONO_PATH except that it points to
15595         GACs instead of lib directories.
15596         * loader.h: The user gac is gone so we dont need function to
15597         enable/disable it.
15598         * mono-config.c: user gac option is now gone.
15599         
15600 2004-05-15  Jackson Harper  <jackson@ximian.com>
15601
15602         * culture-info.h: Make defines more consistent, add calendar data
15603         to the culture info table.
15604         * culture-info-tables.h: Add basic calendar data. Basically
15605         everyone gets default gregorian until all the data is
15606         updated.
15607         * locales.c: Use the new consistent defines. Set calendar data for
15608         culture info objects.
15609         * object.h: add a field for calendar data to CultureInfo
15610         
15611 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
15612
15613         * image.c: image->runtime_invoke_cache is keyed on signatures now.
15614         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
15615         a signature.
15616         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
15617         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
15618         an extra param that is the pointer of the method to invoke. The IL for
15619         the invoke method is no longer specific to the method, but to the
15620         signature of the method. Thus, we can share the same code for multiple
15621         methods. This reduces the number of methods that have to be compiled.
15622
15623 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15624
15625         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
15626
15627         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15628
15629         * icall.c: Optimize Buffer.BlockCopy.
15630
15631 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15632
15633         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
15634         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
15635         quote). Changed them to "MMMM yyyy".
15636
15637 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
15638
15639         * rand.c
15640         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
15641
15642 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
15643
15644         * reflection.h: Updated after changes to managed structures.
15645
15646         * appdomain.c: Bump corlib version.
15647
15648 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15649
15650         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
15651         windows.
15652
15653 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15654
15655         * Makefile.am: link to ../os/libmonoos.la on windows.
15656
15657         * assembly.c:
15658                 -If MONO_DEBUG, warn about non-existing directories in
15659                 MONO_PATH.
15660                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
15661                 compile time variable.
15662                 -Removed init_default_path and call mono_set_rootdir from
15663                 libmonoos.a instead (windows only).
15664
15665         * assembly.h: declare mono_assembly_getrootdir().
15666
15667         * domain.c:
15668         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
15669
15670         * loader.c: s/getenv/g_getenv/
15671
15672 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15673
15674         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
15675
15676         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
15677
15678         * metadata.h: Add new marshalling conversions.
15679
15680         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
15681         function.
15682
15683         * reflection.c (mono_reflection_get_type): Lookup the type in all
15684         modules of a multi-module assembly. Fixes #58291.
15685
15686 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15687
15688         * threads.c: Before aborting a background, set the StopRequested
15689         state.  This avoids throwing the Abort exception.
15690         In mono_thread_manage, don't continue with the shutdown until all
15691         aborted threads have actually stopped.
15692
15693 2004-05-10  Jackson Harper  <jackson@ximian.com>
15694
15695         * locales.c: Remove the modifier from culture names.
15696         
15697 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15698
15699         * Makefile.am: monosn is not installed any more. It has been deprecated
15700         in favor of sn.
15701
15702 2004-05-07  Jackson Harper  <jackson@ximian.com>
15703
15704         * locales.c
15705         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
15706         Fix array construction, add bailout if the length is 0.
15707
15708 2004-05-07  Dick Porter  <dick@ximian.com>
15709
15710         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
15711         machine doesn't have a DNS entry.  Patch by Urs Muff
15712         (umuff@quark.com), fixes bug 57928.
15713
15714 2004-05-06  Jackson Harper  <jackson@ximian.com>
15715
15716         * reflection.c: Handle null PublicTokens properly. alloc mem for
15717         assembly names culture so we dont crash when freeing it.
15718         
15719 2004-05-06  Jackson Harper  <jackson@ximian.com>
15720
15721         * assembly.c: Check the usergac when loading with partial names.
15722         
15723 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
15724
15725         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
15726         does nothing for now (not required for Linux/Windows) but the class
15727         library can call it (and a newer or modified runtime could need it).
15728         * icall.c: Registred icall.
15729
15730 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15731
15732         * loader.c: prints a message on module loading error we set MONO_DEBUG
15733         environment variable.
15734
15735 2004-05-05  Jackson Harper  <jackson@ximian.com>
15736
15737         * appdomain.c: Handle PublicKeyToken=null properly.
15738         
15739 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
15740
15741         * environment.c|h: Added icall ves_icall_System_Environment_
15742         GetOSVersionString to get the current OS version as a string.
15743         * icall.c: Registred icall.
15744
15745 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
15746
15747         * object.c: in mono_object_get_virtual_method(), take into account that
15748         non-virtual methods don't have a slot in the vtable. Check needed when
15749         the object is a proxy.
15750
15751 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15752
15753         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
15754         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
15755
15756         * object.c (mono_class_compute_gc_descriptor): Fix warning.
15757
15758         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
15759         passed when a valuetype is expected.
15760
15761         * object.c (mono_unhandled_exception): Only set the exit code if the
15762         exception happens in the main thread. Fixes thread5.exe.
15763
15764         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
15765         invalid names. Fixes #58047.
15766
15767 2004-05-03  Jackson Harper  <jackson@ximian.com>
15768
15769         * assembly.c: This line was committed accidently and is unneeded.
15770         
15771 2004-05-03  Jackson Harper  <jackson@ximian.com>
15772
15773         * icall.c: Add new icall for Assembly::LoadWithPartialName
15774         * assembly.c/.h: new function that probes the GAC to load partial
15775         assembly names by Paolo Molaro.
15776         
15777 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15778
15779         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
15780         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
15781         (type_get_fully_qualified_name): Added PublicKeyToken when building a
15782         full type name.
15783
15784 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15785
15786         * appdomain.c: fixed check for 'neutral' culture and removed warning.
15787         * reflection.c: fix bug when parsing a full type name and Version is not
15788         the last thing in the string.
15789
15790 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
15791
15792         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
15793         crashes when it is freed.
15794
15795 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15796
15797         * assembly.c: print the compat warning to stderr.
15798
15799 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
15800
15801         * assembly.c (mono_assembly_load_references): Add a compatibility
15802         hack to run old applications that might be still referencing the
15803         3300-based assemblies, only do this for System.xxx.
15804
15805 2004-05-01  Jackson Harper  <jackson@ximian.com>
15806
15807         * appdomain.c: If the culture is neutral we set it to "".
15808         
15809 2004-04-29  Jackson Harper  <jackson@ximian.com>
15810
15811         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
15812
15813 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
15814  
15815         * string-icalls.c: added low overhead function for copying chars
15816         * icall.c: added needed icall for the above function
15817  
15818 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15819
15820         * icall.c: fix return value of get_global_assembly_cache.  Implemented
15821         Environment.GetLogicalDrives.
15822
15823 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
15824
15825         * rand.c: try and talk to egd or prngd
15826         for random bytes if opening devices fail.
15827
15828 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15829
15830         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
15831         alignment for the type using the native alignment of its members 
15832         instead of using klass->min_align.
15833
15834         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
15835
15836 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15837
15838         * file-io.c:
15839         * socket-io.c: added check for sys/aio.h.
15840
15841 2004-04-28  Dick Porter  <dick@ximian.com>
15842
15843         * threads.c: Don't abort a thread thats already aborting, when
15844         terminating everything.
15845
15846 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15847
15848         * icall.c: added 2 new async calls for Socket.
15849
15850         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
15851         IO on *nix systems.
15852
15853         * threadpool.c: removed unused variable.
15854
15855 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
15856
15857         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
15858
15859 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15860
15861         * locales.c: put back string_invariant_tolower () and
15862         string_invariant_toupper ().
15863
15864 2004-04-26 David Waite <mass@akuma.org>
15865
15866         * file-io.h:
15867         * socket-io.h:
15868         * threads.h:
15869         * unicode.h: remove comma from end of enumeration declarations
15870
15871 2004-04-26 David Waite <mass@akuma.org>
15872
15873         * debug-mono-symfile.h:
15874         * decimal.c:
15875         * mono_debug.h:
15876         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
15877
15878
15879 2004-04-26  Jackson Harper  <jackson@ximian.com>
15880
15881         * appdomain.c: Increment version number.
15882         
15883 2004-04-26  Jackson Harper  <jackson@ximian.com>
15884
15885         * appdomain.c: Set assembly references public token value when
15886         PublicKeyToken is specified, not the hash_value. Free public token
15887         values when free assembly name data. Previously the public key
15888         token was hex decoded, however we are using hex encoded public key
15889         tokens, so this is not neccasary.
15890         * assembly.c: Lookup assemblies in the gac if their public token
15891         value is set. Add function to allow enabling user gac
15892         lookups. Specify whether or not the assembly was loaded from the
15893         GAC. Compare full assembly names when checking the cache for
15894         assemblies (Temporarily disabled see comment in code). Remove
15895         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
15896         specifies trace-loader they get extra info to stdout on the
15897         loading of assemblies.
15898         * image.h: Add a field for an assembly references public token
15899         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
15900         whether an assembly has been loaded from the GAC.
15901         * image.c: Remove a corlib -> mscorlib name mapping.
15902         * loader.h: Add function to enable/disable the user gac.
15903         * mono-config.c: Check if the usergac is enabled in the config
15904         file.
15905         * icall.c: New icall to determine whether or not an assembly has
15906         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
15907         * tabldefs.h: Add constant for assemblyref flag that specifies a
15908         full public key is used instead of a public token.
15909         * reflection.c: Remove mscorlib -> corlib mappings. Set
15910         PublicTokenValue instead of hash value. This value is a hex
15911         string so it does not need to be expanded.
15912
15913 2004-04-26  Martin Baulig  <martin@ximian.com>
15914
15915         * mono-debug-debugger.c (mono_debugger_initialize): Set
15916         `mono_debugger_initialized' before calling mono_debug_lock().
15917
15918 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
15919
15920         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
15921           InternalToUpper/InternalToLower.
15922         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
15923           removed invariant culture shortcut.  This is now done in managed code.
15924         * locales.c: (string_invariant_toupper/tolower) removed.
15925
15926 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15927
15928         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
15929         Added Poll internal call.
15930
15931         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
15932         call for Poll. Select was too heavy for polling a single socket.
15933
15934         * threadpool.[ch]: added mono_threadpool_cleanup.
15935         * threads.c: use it. Don't use Thread_Abort on windows.
15936
15937 2004-04-23  Martin Baulig  <martin@ximian.com>
15938
15939         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
15940
15941 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
15942
15943         * icall.c: Registred new icalls for key pair protection and added an
15944         icall for Environment.GetFolderPath on Windows.
15945         * security.c|h: Added new icalls for key pair protection.
15946
15947 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15948
15949         * socket-io.c: don't display the non-supported family warning for known
15950         families. Now this is not displayed on windows when checking support
15951         for IPv4/IPv6.
15952
15953 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15954
15955         * class.c: don't display the layout warning for static fields.
15956
15957 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
15958
15959         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
15960         * locales.c, locales.h: Added new icalls for culture-specific
15961         Char.ToLower and Char.ToUpper.
15962
15963 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15964
15965         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
15966         by David Waite.
15967
15968 2004-04-20  Martin Baulig  <martin@ximian.com>
15969
15970         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
15971         of the type name before passing it to mono_reflection_type_from_name().
15972
15973 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15974
15975         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
15976         encodings here. Fixes #56965.
15977
15978 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
15979
15980         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
15981         fix test on strstr result not that I can see anything that
15982         relies on the result.
15983
15984 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15985
15986         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
15987         Fixes #57081.
15988
15989         * marshal.c (mono_marshal_get_string_encoding): New helper function.
15990
15991         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
15992         function to determine which marshalling to use for strings. Fixes
15993         #56965.
15994
15995         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
15996
15997         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
15998
15999 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
16000
16001         * icall.c: #include mono-config.h
16002
16003 2004-04-15  Jackson Harper  <jackson@ximian.com>
16004
16005         * culture-info-tables.h: Fix date formats for en-US culture.
16006         
16007 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
16008
16009         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
16010         ThreadPool.SetMinThreads.
16011         * threadpool.c: Implemented ThreadPool.GetMinThreads and
16012         ThreadPool.SetMinThreads.
16013
16014 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
16015
16016         * mono-config.c: also load the .config file in the directory
16017         where the assembly was found.
16018
16019 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
16020
16021         * assembly.c: load per-assembly config files.
16022         * icall.c: decrapified code to get the config dir and moved to
16023         mono-config.c.
16024         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
16025         per-assembly config files. When doing a dll map lookup give precedence
16026         to the per-assembly data.
16027
16028 2004-04-14  Martin Baulig  <martin@ximian.com>
16029
16030         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
16031         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
16032         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
16033
16034         * mono-debugger-debugger.c: While the debugger is locked, remember
16035         whether the symbol tables have changes and send one single
16036         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
16037
16038 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
16039
16040         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
16041
16042         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
16043         function.
16044
16045         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
16046         account when marshalling string arrays. Fixes #56965.
16047
16048 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
16049
16050         * icall.c: Add new icalls mapping for security.
16051         * security.c|h: Add internal calls for WindowsIdentity,
16052         WindowsImpersonationContext and WindowsPrincipal.
16053
16054 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
16055
16056         * class.c: Added comment to ensure the System.MonoDummy class
16057         is removed when no longer necessary
16058
16059 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
16060
16061         * appdomain.c: Pass arguments to the bootstraping exceptions to
16062         minimize JITed methods at boot
16063
16064         * metadata.c (mono_exception_from_name_two_strings): Allow for the
16065         second string to be null.
16066
16067         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
16068         Change the protocol to minimize the JIT methods at startup.  Now
16069         it Returns the internal codepage, if the value of "int_code_page"
16070         is 1 at entry, and we can not compute a suitable code page
16071         number, returns the code page as a string.
16072
16073 2004-04-13  Jackson Harper  <jackson@ximian.com>
16074
16075         * culture-info-tables.h: Fix number of decimal digits for all
16076         english locales.
16077
16078 2004-04-13  Jackson Harper  <jackson@ximian.com>
16079
16080         * icall.c: Clairfy out of sync error message. It is not always
16081         your corlib that is out of sync.
16082
16083 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
16084
16085         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
16086         properties when only the set accessor is overriden. Fixes #55874.
16087
16088 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
16089
16090         * assembly.c (mono_assembly_load_references): Make this thread safe.
16091         Fixes #56327.
16092
16093 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
16094
16095         * monosn.c: Add missing initialization calls.
16096
16097 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
16098
16099         * locales.c:
16100         ves_icall_System_Globalization_CultureInfo_construct_number_format
16101         Fix g_assert so it compiles on fussier compilers re int/ptr
16102         mismatch
16103
16104 2004-04-08  Dick Porter  <dick@ximian.com>
16105
16106         * socket-io.h:
16107         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
16108         53992.  Also rearrange the code so that the internal calls return
16109         an error value and exceptions are thrown from managed code.
16110
16111         * icall.c: Add type info to the socket icalls.
16112
16113 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16114
16115         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
16116         owes me a beer.
16117
16118 2004-04-07  Martin Baulig  <martin@ximian.com>
16119
16120         * class.c (mono_class_from_generic_parameter): Don't default
16121         `klass->parent' to `mono_defaults.object_type'.
16122
16123 2004-04-07  Martin Baulig  <martin@ximian.com>
16124
16125         * reflection.c (mono_reflection_initialize_generic_parameter): Set
16126         `param->pklass->reflection_info'.       
16127
16128 2004-04-07  Jackson Harper  <jackson@ximian.com>
16129
16130         * culture-info-tables.h: Fix date separator symbol.
16131         
16132 2004-04-07  Martin Baulig  <martin@ximian.com>
16133
16134         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
16135         from System.Type to System.MonoType.
16136
16137 2004-04-07  Martin Baulig  <martin@ximian.com>
16138
16139         * reflection.h
16140         (MonoReflectionGenericParam): Added `has_reference_type' and
16141         `has_value_type' fields.
16142
16143         * reflection.c (mono_image_get_generic_param_info): Encode the
16144         correct flags if we have the `class' or `struct' constraint.
16145
16146 2004-04-07  Martin Baulig  <martin@ximian.com>
16147
16148         * reflection.h
16149         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
16150
16151 2004-04-07  Jackson Harper  <jackson@ximian.com>
16152
16153         * appdomain.c: Revert extra patches, just wanted to bump the
16154         version number.
16155         
16156 2004-04-07  Jackson Harper  <jackson@ximian.com>
16157
16158         * Makefile.am: Add culture-info private headers.
16159         * icall.c: Add new icalls for contructing locales.
16160         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
16161         * locales.h: Declare new culture info construction methods.
16162         * object.h: Add new fields used to avoid the CultureMap to
16163         MonoCultureInfo.
16164         * culture-info.h: Definition of structs used in the culture info
16165         tables.
16166         * culture-info-tables.h: Autogenerated tables that contain culture
16167         info data. This file was generated with the locale-builder tool.
16168         * appdomain.c: Incement corlib version number.
16169         
16170 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
16171
16172         * appdomain.c: (mono_runtime_init) move mono_thread_init
16173         to before mono_object_new calls so critical sections
16174         are initialized before use.
16175
16176 2004-04-07  Martin Baulig  <martin@ximian.com>
16177
16178         * icall.c
16179         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
16180         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
16181         (ves_icall_MonoGenericParam_initialize): Removed.
16182         (monogenericparam_icalls): Removed.
16183         (generictypeparambuilder_icalls): Added new table for
16184         System.Reflection.Emit.GenericTypeParameterBuilder.
16185
16186         * reflection.c
16187         (mono_reflection_define_generic_parameter): Removed.
16188         (mono_reflection_initialize_generic_parameter): This is now called
16189         from GenericTypeParameterBuilder's .ctor.
16190
16191 2004-04-06  Martin Baulig  <martin@ximian.com>
16192
16193         * class.c (mono_class_init): Don't inflate nested classes in a
16194         generic instance.
16195         (mono_type_get_name_recurse): Include the generic arguments for
16196         generic instances and generic type declarations.
16197         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
16198         (_mono_class_get_instantiation_name): Removed.
16199         (mono_class_create_generic): Always use `gklass->name' as our name.
16200
16201         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
16202
16203         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
16204         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
16205         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
16206         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
16207         closed generic methods here.
16208
16209         * reflection.c
16210         (mono_reflection_generic_inst_get_nested_types): Removed.
16211         (inflate_mono_method): Copy the generic parameters from the
16212         MonoMethodHeader into out MonoGenericMethod.
16213
16214 2004-04-06  Martin Baulig  <martin@ximian.com>
16215
16216         * row-indexes.h
16217         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
16218
16219         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
16220
16221         * reflection.c (build_compressed_metadata): If we have any entries
16222         in the GenericParam, MethodSpec or GenericParamConstraint tables,
16223         set the header version to 1.1.
16224
16225 2004-04-06  Martin Baulig  <martin@ximian.com>
16226
16227         * class.c (mono_class_init): If we're a generic instance,
16228         initialize our nested classes, too.
16229         (_mono_class_get_instantiation_name): Deal with the new `!%d'
16230         suffix. 
16231
16232 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16233
16234         * process.c: quote the argument passed to the shell on windows.
16235
16236 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
16237
16238         * threads.c (mono_alloc_special_static_data): Allow this to be
16239         called during startup.
16240
16241 2004-04-02  Martin Baulig  <martin@ximian.com>
16242
16243         * icall.c
16244         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
16245
16246 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
16247
16248         * icall.c: Fix build.
16249
16250 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
16251
16252         * Makefile.am: Added security.c|h.
16253         * icall.c: Added icall for get_UserName;
16254         * security.c: New file for security related icalls. Added function
16255         get_UserName for System.Environment (fix #56144).
16256         * security.h: New. Header file for security.c
16257
16258 2004-04-02  Dick Porter  <dick@ximian.com>
16259
16260         * icall.c: Deleted the icalls that were obsoleted some time ago
16261         by the ICU string code, and which were mixed into the icall
16262         rearranging.  Fixes bug 55969.
16263
16264         * string-icalls.h: 
16265         * string-icalls.c: Deleted the code that those icalls reference.
16266
16267 2004-04-01  Martin Baulig  <martin@ximian.com>
16268
16269         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
16270
16271         * class.c (mono_class_from_generic_parameter): Don't set 
16272         TYPE_ATTRIBUTE_INTERFACE.
16273         (my_mono_class_from_generic_parameter): Likewise.
16274
16275 2004-04-01  Martin Baulig  <martin@ximian.com>
16276
16277         * loader.c (find_method): Added an optional `MonoClass *ic'
16278         argument to search in a specific interface.
16279         (mono_get_method_constrained): New public function.
16280
16281 2004-04-01  Martin Baulig  <martin@ximian.com>
16282
16283         * reflection.c (mono_image_get_generic_field_token): Use the
16284         `handleref' cache here.
16285
16286 2004-04-01  Martin Baulig  <martin@ximian.com>
16287
16288         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
16289
16290         * reflection.c (create_generic_typespec): Use the `typespec' hash
16291         here, not the `typeref' one.    
16292
16293 2004-04-01  Martin Baulig  <martin@ximian.com>
16294
16295         * class.c (mono_class_inflate_generic_type): Moved the
16296         functionality into a new static inflate_generic_type() which
16297         returns NULL if it didn't do anything.  Only increment the
16298         `mono_stats.inflated_type_count' if we actually inflated
16299         something.
16300         (mono_class_get_full): Check the classes type to see whether we
16301         need to inflate it; also inflate MONO_TYPE_(M)VAR.
16302
16303 2004-04-01  Jackson Harper  <jackson@ximian.com>
16304
16305         * reflection.c: Set culture for assembly references.
16306         
16307 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
16308
16309         * reflection.[ch], icall.[ch], Fix support for pinning variables.
16310
16311 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16312
16313         * assembly.c:
16314         (do_mono_assembly_open): the critical section also covers
16315         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
16316
16317 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16318
16319         * threads.c:
16320         (mono_manage_threads): abort the background threads when finishing.
16321         Fixes bug #47232.
16322
16323 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16324
16325         * gc.c: only close the done_event handle if there was no timeout.
16326         C-ified comments.
16327
16328 2004-03-30  Martin Baulig  <martin@ximian.com>
16329
16330         * icall.c (icall_entries): It's called "System.Activator", not
16331         "System.Activation".    
16332
16333 2004-03-30  Martin Baulig  <martin@ximian.com>
16334
16335         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
16336         (mono_class_create_from_typespec): Likewise.
16337
16338 2004-03-30  Martin Baulig  <martin@ximian.com>
16339
16340         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
16341         `has_ctor_constraint' and `initialized'.
16342
16343 2004-03-30  Martin Baulig  <martin@ximian.com>
16344
16345         * reflection.c (encode_new_constraint): New static function to add
16346         the constructor constraint attribute to a type parameter.
16347         (encode_constraints): Call encode_new_constraint() if necessary.
16348
16349         * reflection.h
16350         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
16351
16352         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
16353         
16354 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
16355
16356         * reflection.c, icall.c: add support for pinning variables. 
16357
16358 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
16359
16360         * marshal.c (mono_marshal_get_managed_wrapper):
16361         init bool local with zero rather than null.
16362
16363 2004-03-29  Martin Baulig  <martin@ximian.com>
16364
16365         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
16366         the "official" behavior here.
16367         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
16368
16369 2004-03-29  Martin Baulig  <martin@ximian.com>
16370
16371         * icall.c: Reflect latest API changes.
16372
16373 2004-03-29  Martin Baulig  <martin@ximian.com>
16374
16375         * loader.c (mono_get_method_from_token): Also call
16376         mono_metadata_load_generic_params () for abstract and interface
16377         methods; replace the type arguments in the method signature with
16378         the ones which are loaded from the metadata.
16379
16380 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
16381
16382         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
16383         of the lock is not the current thread. MS.NET don't do it, in spite of
16384         what the documentation says. See bug #56157.
16385
16386 2004-03-28  Martin Baulig  <martin@ximian.com>
16387
16388         * class.c (mono_class_init): Don't call init_properties() and
16389         init_events() for generic instances; set `prop->parent' when
16390         inflating properties.
16391
16392         * reflection.c (mono_generic_inst_get_object): Call
16393         `mono_class_init (ginst->klass)'.
16394         (mono_type_get_object): Only create a MonoGenericInst if your
16395         generic type is a TypeBuilder.
16396         (do_mono_reflection_bind_generic_parameters): Only set
16397         `ginst->is_dynamic' if our generic type is a TypeBuilder.
16398
16399 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
16400
16401         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
16402         Fixes #56091.
16403
16404 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16405
16406         * icall.c: added Kill_internal icall.
16407         * process.[ch]: added Kill_internal icall.
16408
16409 2004-03-25  Martin Baulig  <martin@ximian.com>
16410
16411         * class.h (MonoStats): Added `generic_instance_count',
16412         `inflated_method_count', `inflated_type_count' and
16413         `generics_metadata_size'.       
16414
16415 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16416
16417         * reflection.c: no warnings now.
16418
16419 2004-03-25  Martin Baulig  <martin@ximian.com>
16420
16421         * class.c (mono_class_get_full): New public function; does a
16422         mono_class_get(), but also takes a `MonoGenericContext *'.
16423
16424         * loader.c (mono_field_from_memberref): Renamed to
16425         `field_from_memberref', made static and added `MonoGenericContext *'
16426         argument.
16427         (mono_field_from_token): Added `MonoGenericInst *' argument.
16428         (method_from_memberef): Likewise.
16429         (mono_get_method_from_token): Likewise.
16430         (mono_get_method_full): New public function; does a
16431         mono_get_method(), but also takes a `MonoGenericContext *'.
16432
16433         * verify.c (mono_method_verify): Get the method's generic context
16434         and pass it to mono_field_from_token(), mono_get_method_full() and
16435         mono_class_get_full().
16436
16437 2004-03-25  Martin Baulig  <martin@ximian.com>
16438
16439         * class.c (mono_class_inflate_generic_type): Take a
16440         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
16441         `MonoGenericMethod *'.
16442
16443 2004-03-25  Martin Baulig  <martin@ximian.com>
16444
16445         * loader.h (MonoMethodInflated): Store the MonoGenericContext
16446         instead of the MonoGenericMethod here.
16447
16448 2004-03-25  Martin Baulig  <martin@ximian.com>
16449
16450         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
16451         each time we create a new MonoGenericInst, we also create a new
16452         context which points back to us.
16453
16454         * class.c (inflate_method): Use `ginst->context' instead of
16455         creating a new context.
16456
16457         * loader.c (method_from_memberref): Use
16458         `klass->generic_inst->context' instead of creating a new context.
16459
16460 2004-03-25  Martin Baulig  <martin@ximian.com>
16461
16462         * class.h (MonoGenericContext): New struct.
16463         (MonoGenericMethod): Removed `generic_inst'.
16464
16465         * class.c (mono_class_inflate_generic_method): Take a
16466         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
16467
16468 2004-03-25  Martin Baulig  <martin@ximian.com>
16469
16470         * loader.h (MonoMethodInflated): New typedef.
16471
16472         * metadata.h (MonoMethodSignature): Removed `gen_method', make
16473         `generic_param_count' consume just 30 bits, added `is_inflated'
16474         and `has_type_parameters' flags (one bit each).
16475
16476         * class.c (mono_class_inflate_generic_method): Create a
16477         MonoMethodInflated instead of a MonoMethodNormal and set
16478         `is_inflated' in the method signature.
16479
16480         * class.h (MonoGenericMethod): Removed `generic_method'.
16481
16482 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
16483
16484         * image.c: Make sure the name of a MonoImage is always an absolute path.
16485           This fixes bug #54415.
16486
16487 2004-03-24  Martin Baulig  <martin@ximian.com>
16488
16489         * class.c (mono_class_setup_vtable): If we're a generic instance,
16490         use our generic type's vtable size.
16491
16492 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
16493
16494         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
16495         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
16496         problems.
16497
16498 2004-03-23  Martin Baulig  <martin@ximian.com>
16499
16500         * class.h (MonoDynamicGenericInst): Added `int count_events' and
16501         `MonoEvent *events'.
16502
16503         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
16504         (typebuilder_icalls): Added "get_event_info"; calls
16505         mono_reflection_event_builder_get_event_info(). 
16506
16507         * reflection.c (mono_reflection_generic_inst_initialize): Added
16508         `MonoArray *events'.
16509         (mono_reflection_event_builder_get_event_info): New function.
16510
16511 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
16512
16513         * object.h: add mono_type_initialization_init
16514
16515         * object.c (mono_runtime_class_init): 
16516         implement class constructor synchronization rules
16517         to cope with threading issues.  
16518         add mono_type_initialization_init
16519
16520         * appdomain.c (mono_runtime_init): call 
16521         mono_type_initialization_init
16522
16523         * class.h: removing initializing field from MonoVTable
16524
16525 2004-03-23  Martin Baulig  <martin@ximian.com>
16526
16527         * class.c (my_mono_class_from_generic_parameter): Use
16528         `param->name' if it's not NULL. 
16529
16530 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
16531
16532         * class.c: do not insert non-virtual methods in the vtable.
16533         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
16534         that means the method is non-virtual. This never would have
16535         happened before.
16536
16537 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
16538
16539         * profiler.c: Added lock for accessing coverage_hash.
16540
16541 2004-03-22  Martin Baulig  <martin@ximian.com>
16542
16543         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
16544         `method->method->signature->generic_param_count != 0' to make it
16545         work for interface methods.
16546
16547 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16548
16549         * process.c: quote the string passed to the shell using g_shell_quote.
16550
16551 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16552
16553         * threads.c:
16554         (mono_threads_manage): don't remove the finalizer thread and self
16555         from the threads hash table so that mono_thread_manage can be called
16556         more than once.
16557
16558 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16559
16560         * process.c: quote the arguments when UseShellExecute is true. Fixes
16561         bug #55790.
16562
16563 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16564
16565         * threads.c: set mono_thread_detach as a cleanup routine for every
16566         thread. This way it's always executed upon thread termination, either
16567         aborted or finished normally. No more xsp hangs!
16568
16569 2004-03-17  Martin Baulig  <martin@ximian.com>
16570
16571         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
16572         `int count_nested' and a `MonoType **nested'.
16573
16574         * reflection.c (mono_reflection_bind_generic_parameters): Moved
16575         most of the functionality into a new static
16576         do_mono_reflection_bind_generic_parameters() and don't take a
16577         `MonoType *nested_in' argument any more.  Don't compute nested
16578         types here.
16579         (mono_reflection_generic_inst_get_nested_types): New public method
16580         to get nested types.
16581
16582         * class.c (mono_class_create_generic): Set `klass->nested_in' if
16583         we're a nested class.
16584
16585         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
16586         mono_reflection_generic_inst_get_nested_types() to compute the
16587         nested types.
16588
16589 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
16590
16591         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
16592         descriptive error message under windows.
16593         
16594 2004-03-17  Martin Baulig  <martin@ximian.com>
16595
16596         * class.c (dup_type): Added `const MonoType *original' argument;
16597         copy the attrs from the original type.
16598
16599 2004-03-17  Martin Baulig  <martin@ximian.com>
16600
16601         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
16602         `m->generic_inst_cache' here.
16603
16604 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
16605
16606         * exception.h exception.c: Add stack_overflow_exception.
16607
16608 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16609
16610         * threadpool.c:
16611         (overlapped_callback): call SetEvent *after* invoking the callback.
16612         No need to call CloseHandle.
16613
16614 2004-03-16  Martin Baulig  <martin@ximian.com>
16615
16616         * reflection.c (mono_image_get_fieldref_token): Take a
16617         `MonoReflectionField *' instead of a `MonoClassField *' and a
16618         `MonoClass *'; store the `MonoReflectionField *' in the hash.
16619
16620 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16621
16622         * appdomain.c: don't add the culture to the filename we're looking for
16623         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
16624
16625 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16626
16627         * locales.c: don't ignore symbols when doing case insensitive compares.
16628         Thanks Dick! Fixes bug #54046.
16629
16630         * threads.c: surround 'threads' usage with enter/leave in
16631         mono_thread_manage.
16632
16633 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
16634
16635         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
16636         implicitly marshalled as [Out]. Fixes #55450.
16637
16638         (mono_marshal_get_runtime_invoke): Zero out the result if there is
16639         an exception.
16640
16641 2004-03-16  Martin Baulig  <martin@ximian.com>
16642
16643         * class.c (mono_class_from_generic_parameter): Use the actual
16644         parameter name. 
16645
16646 2004-03-16  Martin Baulig  <martin@ximian.com>
16647
16648         * reflection.c (type_get_signature_size): New static function.
16649         Compues the size of the type in a method signature.
16650         (method_get_signature_size): New static function; calls
16651         type_get_signature_size() to compute the actual size of the
16652         method's signature.
16653         (method_encode_signature): Use method_get_signature_size() to get
16654         the signature's size rather than using `nparams * 10'.
16655
16656 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16657
16658         * file-io.h: define here WapiOverlapped on windows. I don't want the
16659         regular OVERLAPPED one.
16660
16661         * file-io.c:
16662         * threadpool.c: somehow, BindIoCompletionCallback is not found.
16663         Disabling AIO on windows.
16664
16665 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16666
16667         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
16668         bug #55385.
16669
16670 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16671
16672         * appdomain.c: upgraded corlib version.
16673
16674         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
16675         and BeginWrite. Allow opening files for asynchrnous operations.
16676
16677         * file-io.h: new struct that maps FileStreamAsyncResult.
16678         * icall.c: added new icalls.
16679         * process.[ch]: support setting child process environment variables
16680         and use the SHELL or COMSPEC when UseShellExecute is true.
16681
16682         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
16683         callback for async. IO is here and also BindHandle.
16684
16685         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
16686         from here.
16687
16688 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
16689
16690         * reflection.c (create_custom_attr): Allow len == 0.
16691
16692         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
16693         computation on big-endian machines.
16694
16695 2004-03-13  Martin Baulig  <martin@ximian.com>
16696
16697         * class.h (MonoGenericInst): Added `int count_ifaces'.
16698
16699         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
16700         `ginst->count_ifaces' instead `klass->interface_count' since we
16701         may get called before the vtable is created.
16702
16703         * loader.c (mono_method_get_param_names): If we're a generic
16704         instance, return and don't initialize the class.
16705
16706         * reflection.c (mono_reflection_setup_generic_class): Don't call
16707         ensure_runtime_vtable().
16708         (mono_reflection_bind_generic_parameters): Set
16709         `ginst->count_ifaces'.
16710
16711 2004-03-11  Jackson Harper <jackson@ximian.com>
16712
16713         * icall.c:
16714         * unicode.c:
16715         * unicode.h: Remove unused System.Char icalls.
16716         
16717 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
16718
16719         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
16720         code when we P/Invoke the first library in Windows.Forms, instead
16721         of when we first open the assembly.
16722
16723         * assembly.c: Drop the lookup from here.
16724
16725 2004-03-10  Martin Baulig  <martin@ximian.com>
16726
16727         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
16728         class for properties, fields and events.  Finally fixes #54945.
16729
16730 2004-03-10  Martin Baulig  <martin@ximian.com>
16731
16732         * metadata.c (mono_metadata_class_equal): New static function;
16733         checks whether two generic instances or two generic parameters are
16734         equal.
16735         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
16736         compare classes.        
16737
16738 2004-03-10  Martin Baulig  <martin@ximian.com>
16739
16740         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
16741
16742         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
16743         argument and write it into the `reflection_info' field.
16744
16745         * icall.c
16746         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
16747         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
16748
16749 2004-03-09  Jackson Harper  <jackson@ximian.com>
16750
16751         * char-conversions.h: use 8 bits for numeric data its all we need
16752         * icall.c: numeric data is only 8 bits now.
16753
16754 2004-03-09  Martin Baulig  <martin@ximian.com>
16755
16756         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
16757
16758         * class.c (init_properties, init_events): Initialize the new
16759         `parent' field.
16760
16761         * reflection.c (typebuilder_setup_properties): Likewise.
16762         (typebuilder_setup_events): Likewise.
16763
16764         * reflection.h (MonoEventInfo): Replaced `parent with
16765         `declaring_type' and `reflected_type'.
16766
16767         * icall.c (ves_icall_get_property_info): Distinguish between
16768         declaring and reflected type.
16769         (ves_icall_get_event_info): Likewise.
16770
16771 2004-03-09  Martin Baulig  <martin@ximian.com>
16772
16773         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
16774         (ves_icall_Type_GetField): Correctly set field->klass.
16775
16776 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
16777
16778         * loader.h: Fix warning.
16779
16780 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
16781
16782         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
16783         library routine if present.  Notice that it will still continue
16784         executing even if its missing, for those working on the Gtk#
16785         edition of Windows.Forms.
16786
16787         * assembly.c (do_mono_assembly_open): If loading the
16788         System.Windows.Forms call mono_loader_wini_init.
16789
16790 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
16791
16792         * class.h: Added MonoRemoteClass struct.
16793         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
16794         function for MonoStrings.
16795         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
16796         Added internal call for getting the proxy type.
16797         * marshal.c: Get the type of transparent proxies from its remote_class.
16798         Added methods that generate the IL for type checks and casts:
16799         mono_marshal_get_isinst, mono_marshal_get_castclass, 
16800         mono_marshal_get_proxy_cancast.
16801         * marshal.h: Declaration of the previous new methods.
16802         * object.c: Added new moethods for creating and updating MonoRemoteClass
16803         instances: mono_remote_class, mono_upgrade_remote_class, 
16804         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
16805         * verify.c: FIx transparent_proxy_fields layout.
16806         * appdomain.c: Bump corlib version.
16807
16808 2004-03-04  Jackson Harper  <jackson@ximian.com>
16809
16810         * icall.c: Add icall to access char conversion tables.
16811         * char-conversions.h: Character conversion tables.
16812         * Makefile.am: Add char-conversions.h private header file.
16813         
16814 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
16815
16816         * appdomain.c (unload_thread_main): Increase unloading timeout to
16817         10 sec as a temporary workaround for Nant problems.
16818
16819 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
16820
16821         * gc.c: Add checks for GC_enable and GC_disable.
16822
16823         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
16824         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
16825         (bug #54988).
16826         
16827 2004-02-27  Martin Baulig  <martin@ximian.com>
16828
16829         * reflection.c (mono_reflection_bind_generic_parameters): Take a
16830         `MonoReflectionType *' instead of a `MonoType *'.
16831
16832 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16833
16834         * gc.c (run_finalize): Avoid finalizing the object representing the
16835         finalizer thread.
16836         (finalizer_thread): Fix warning.
16837
16838 2004-02-25  Martin Baulig  <martin@ximian.com>
16839
16840         * class.c (_mono_class_get_instantiation_name): Added `int offset'
16841         argument for nested types.
16842         (mono_class_create_generic): Added support for nested generictypes.
16843
16844         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
16845         `GList *nested'.
16846
16847         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
16848
16849         * reflection.c (method_encode_signature): Increase the minimum
16850         value of `size' from 10 to 11.
16851         (mono_reflection_bind_generic_parameters): Take `int type_argc'
16852         and `MonoType **types' arguments instead of the `MonoArray
16853         *types'; added `MonoType *nested_in'.  Recursively instantiate
16854         nested classes. 
16855
16856 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16857
16858         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
16859         stack_overflow_ex members which are used by exception handling.
16860
16861         * appdomain.c (mono_runtime_init): Initialize the new members.
16862
16863         * gc.c (mono_gc_enable): New helper function.
16864         * gc.c (mono_gc_disable): New helper function.
16865
16866 2004-02-23  Martin Baulig  <martin@ximian.com>
16867
16868         * icall.c: I must have been really stupid - make it actually work
16869         this time ;-)
16870
16871 2004-02-23  Martin Baulig  <martin@ximian.com>
16872
16873         * loader.c (method_from_memberref): Only inflate the method if
16874         it's in another klass.
16875
16876 2004-02-23  Martin Baulig  <martin@ximian.com>
16877
16878         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
16879         (mono_class_init): If we're a generic instance and an interface,
16880         compute `class->interface_id'; also create `class->interfaces'
16881         here and inflate them.
16882
16883         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
16884         `ginst->is_open'.
16885         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
16886
16887         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
16888
16889 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
16890
16891         * reflection.c (method_encode_code): Improved the error message
16892         generated by the exception.
16893
16894 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16895
16896         * icall.c: Martin did not do what he said in the ChangeLog for
16897         2004-02-18, but put back the changes for properties and events.
16898         Commenting those changes out again and adding comment to bug #54518.
16899         
16900         * process.c: removed warning.
16901
16902 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
16903
16904         * marshal.c (emit_struct_conv): Print an error message instead of
16905         asserting when a type does not have the StructLayout attribute.
16906
16907 2004-02-20  Martin Baulig  <martin@ximian.com>
16908
16909         * reflection.c (mono_type_get_object): Also use the cache for
16910         generic instances.
16911         (mono_reflection_bind_generic_parameters): Always compute
16912         `ginst->ifaces'.        
16913
16914 2004-02-20  Martin Baulig  <martin@ximian.com>
16915
16916         * class.h (MonoGenericMethod): Removed `klass'.
16917
16918         * class.c (mono_class_inflate_generic_method): Added `MonoClass
16919         *klass' argument.
16920
16921 2004-02-20  Martin Baulig  <martin@ximian.com>
16922
16923         * reflection.c (method_encode_methodspec): Actually use the
16924         uninflated signature for the memberref.
16925
16926 2004-02-20  Martin Baulig  <martin@ximian.com>
16927
16928         * class.h (MonoGenericMethod): Removed `declaring'.
16929
16930         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
16931         is NULL, compute it here.
16932
16933 2004-02-20  Martin Baulig  <martin@ximian.com>
16934
16935         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
16936
16937         * metadata.c (mono_metadata_generic_inst_hash): New method.
16938         (mono_metadata_generic_inst_equal): New method.
16939
16940         * reflection.c (mono_reflection_bind_generic_parameters): Use the
16941         `klass->image->generic_inst_cache' cache to avoid creating
16942         duplicate MonoGenericInst's.
16943
16944         * class.c (mono_class_inflate_generic_type): Use the cache.
16945
16946 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
16947
16948         * object.c: fixed gc descriptor calculation for embedded valuetypes.
16949
16950 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16951
16952         * icall.c: added Socket.WSAIoctl icall.
16953
16954         * socket-io.[ch]: implemented
16955         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
16956
16957 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
16958
16959         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
16960
16961 2004-02-18  Urs C Muff  <umuff@quark.com>
16962
16963         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
16964         this work on PPC and other big-endian architectures.
16965
16966         * debug-mono-symfile.h: Prepended the names of all the `guint32'
16967         fields with an underscore to make sure they're only accessed by
16968         the read32() macro.
16969
16970 2004-02-18  Martin Baulig  <martin@ximian.com>
16971
16972         * icall.c: Put the klass->refclass changes back for methods and
16973         fields, but not for properties and events.  We're currently not
16974         distinguishing between DeclaringType and ReflectedType for
16975         properties and events, that's what caused the regressions.
16976
16977 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16978
16979         * object.c:
16980         (mono_async_result_new): the handle can be NULL.
16981
16982         * threadpool.c: Use an event instead of a semaphore, don't initialize
16983         it until needed. This saves quite a few semaphores from being created
16984         when using the threadpool.
16985
16986 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
16987
16988         * object.c (mono_string_is_interned_lookup): Fix interning of long
16989         strings. Fixes #54473.
16990
16991         * domain.c (ldstr_equal): Optimize if the two strings are equal.
16992
16993         * icall.c: Revert the klass->refclass changes since they introduce
16994         regressions (bug #54518).
16995
16996 2004-02-18  Martin Baulig  <martin@ximian.com>
16997
16998         * class.c (mono_class_init): If we're a generic instance and don't
16999         come from a TypeBuilder, inflate our members here.
17000         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
17001         (mono_class_create_generic): New public method.
17002         (mono_class_initialize_generic): Removed.
17003         (get_instantiation_name): Renamed to
17004         _mono_class_get_instantiation_name() and made it public.
17005
17006 2004-02-18  Martin Baulig  <martin@ximian.com>
17007
17008         * class.c (mono_class_inflate_generic_type): Clear the new
17009         instance's `nginst->klass' when inflating a generic instance.
17010         (mono_class_is_subclass_of): Added (basic) support for generic
17011         instances.
17012
17013 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
17014
17015         * appdomain.h, domain.c: use a MonoCodeManager instead of a
17016         MonoMempool to hold compiled native code.
17017
17018 2004-02-17  Martin Baulig  <martin@ximian.com>
17019
17020         * class.h (MonoDynamicGenericInst): Added `count_properties' and
17021         `properties'.
17022
17023         * reflection.c (mono_reflection_generic_inst_initialize): Added
17024         `MonoArray *properties' argument.
17025
17026         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
17027
17028 2004-02-17  Martin Baulig  <martin@ximian.com>
17029
17030         * icall.c (ves_icall_Type_GetFields): Renamed to
17031         ves_icall_Type_GetFields_internal() and added a
17032         `MonoReflectionType *rtype' argument; pass it to
17033         mono_field_get_object() to set the field's "reflected" type.
17034         (ves_icall_Type_GetConstructors): Likewise.
17035         (ves_icall_Type_GetEvents): Likewise.
17036         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
17037         argument; pass it to mono_method_get_object() to set the method's
17038         "reflected" type.       
17039
17040 2004-02-17  Martin Baulig  <martin@ximian.com>
17041
17042         * class.h (MonoDynamicGenericInst): New type.
17043         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
17044
17045         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
17046         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
17047         (ves_icall_MonoGenericInst_GetFields): New interncall.
17048
17049         * class.c (mono_class_from_generic): Don't call
17050         mono_class_initialize_generic() if this is a dynamic instance;
17051         ie. it's being created from a TypeBuilder.
17052         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
17053         `class->byval_arg.type'.
17054
17055         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
17056         to `inflate_method' and made static.
17057         (mono_reflection_inflate_field): Removed.
17058         (mono_reflection_generic_inst_initialize): New public method.
17059
17060         * reflection.h (MonoReflectionGenericInst): Removed `methods',
17061         `ctors' and `fields'; added `initialized'.
17062
17063 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
17064
17065         * debug-helpers.c (mono_method_full_name): Fix output for empty
17066         namespaces.
17067
17068 2004-02-12  Martin Baulig  <martin@ximian.com>
17069
17070         * class.h (MonoClassField): Added `MonoType *generic_type'.
17071
17072         * reflection.c (mono_image_get_fieldref_token): Added support for
17073         instantiated generic types.
17074         (field_encode_inflated_field): Removed.
17075         (mono_image_get_inflated_field_token): Removed.
17076         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
17077
17078         * reflection.h (MonoReflectionInflatedField): Removed.
17079
17080 2004-02-12  Martin Baulig  <martin@ximian.com>
17081
17082         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
17083         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
17084
17085         * reflection.c (mono_image_get_methodspec_token): Take a
17086         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
17087         (mono_image_create_token): Check whether we have a
17088         `method->signature->gen_method' and call
17089         mono_image_get_methodspec_token() if appropriate.
17090         (inflated_method_get_object): Removed.
17091         (mono_reflection_bind_generic_method_parameters): Return a
17092         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
17093         (mono_reflection_inflate_method_or_ctor): Likewise.
17094
17095         * reflection.h (MonoReflectionInflatedMethod): Removed.
17096
17097 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
17098
17099         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
17100         for custom valuetype marshalling.
17101
17102         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
17103
17104 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17105
17106         * icall.c: fixed WSAGetLastError_internal name.
17107
17108 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
17109
17110         * threads.c (mono_thread_attach): Allow this to be called multiple
17111         times for a thread.
17112         
17113         * threads.c (build_wait_tids): Do not wait for ourselves.
17114
17115         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
17116         appdomain list is empty.
17117
17118         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
17119         memory returned by mono_string_builder_to_utf16, since it points into
17120         managed memory. Thanks to Bernie Solomon for noticing this.
17121
17122         * icall.c: Add AppDomainSetup icalls.
17123
17124         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
17125
17126         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
17127         types.
17128
17129         * reflection.c (reflection_methodbuilder_to_mono_method): Save
17130         custom attributes to the method_aux struct. Also fix array indexes etc.
17131
17132         * loader.c (mono_method_get_param_names): Make dynamic case work again.
17133         
17134 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
17135
17136         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
17137         (both static and runtime) and reduce startup time.
17138
17139 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
17142         AsAny marshalling conversion instead of crashing.
17143
17144         * marshal.c: Fix warnings.
17145
17146 2004-02-09  Martin Baulig  <martin@ximian.com>
17147
17148         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
17149
17150         * reflection.h (MonoReflectionInflatedMethod): Removed the
17151         `declaring' field, it's now in the unmanaged MonoGenericMethod.
17152
17153         * reflection.c (method_encode_methodspec): Removed the `method'
17154         argument; we get it from `gmethod->declaring'.
17155         (inflated_method_get_object): Removed the `declaring' argument.
17156
17157 2004-02-09  Martin Baulig  <martin@ximian.com>
17158
17159         * class.h (MonoGenericMethod): New type.
17160         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
17161         `generic_method'.
17162
17163         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
17164         a `MonoGenericMethod *gen_method' one.
17165
17166         * class.c (mono_class_inflate_generic_type): Take an additional
17167         `MonoGenericMethod * argument.  This is only non-NULL if we're
17168         inflating types for a generic method.   
17169         (mono_class_inflate_generic_signature): Renamed to
17170         inflate_generic_signature() and made static; take a
17171         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
17172         (inflate_generic_header): Take a `MonoGenericMethod *' argument
17173         instead of a `MonoGenericInst *' one.
17174         (mono_class_inflate_generic_method): Likewise.
17175
17176         * reflection.c (encode_generic_method_sig): Take a
17177         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
17178         (method_encode_methodspec): Likewise.
17179         (inflated_method_get_object): Likewise. 
17180
17181         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
17182         field with a `MonoGenericMethod *gmethod' one.  
17183
17184 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
17185
17186         * class.h (mono_class_has_parent): add parens to expansion
17187         so you can ! this.
17188
17189 2004-02-08  Martin Baulig  <martin@ximian.com>
17190
17191         * image.h (MonoImage): Removed `generics_cache'.
17192
17193         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
17194         instead of a `MonoType *' argument; removed the `inflate_methods'
17195         argument.  Don't inflate methods here.
17196
17197         * loader.c (find_method): If it's a generic instance, call
17198         mono_class_init() on the `sclass->generic_inst->generic_type'.
17199
17200         * metadata.c (mono_type_size): Make this work on uninitialized
17201         generic instances; call it on the `ginst->generic_type's class.
17202
17203         * reflection.c (mono_reflection_bind_generic_parameters): Call
17204         mono_class_from_generic() to create the `ginst->klass'.
17205
17206 2004-02-08  Martin Baulig  <martin@ximian.com>
17207
17208         * class.h (MonoClass): Changed type of `generic_inst' from
17209         `MonoType *' to `MonoGenericInst *'.
17210
17211 2004-02-08  Martin Baulig  <martin@ximian.com>
17212
17213         * icall.c (ves_icall_Type_BindGenericParameters): Just call
17214         mono_type_get_object(), this is now creating a `MonoGenericInst'
17215         for MONO_TYPE_GENERICINST.
17216         (ves_icall_MonoGenericInst_GetParentType): Likewise.
17217         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
17218
17219         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
17220         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
17221         (inflated_method_get_object): Added `MonoClass *refclass' argument.
17222         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
17223         and reflected type.
17224
17225         * reflection.h (MonoReflectionInflatedMethod): Removed
17226         `declaring_type' and `reflected_type'.
17227
17228 2004-02-08  Martin Baulig  <martin@ximian.com>
17229
17230         * class.h (MonoGenericInst): Added `MonoType *parent' and
17231         `MonoType **ifaces'.
17232
17233         * reflection.h (MonoReflectionGenericInst): Removed `klass',
17234         `parent' and `interfaces'.
17235
17236         * reflection.c (mono_reflection_bind_generic_parameters): Take a
17237         `MonoType *' argument and return a `MonoType *'.
17238
17239         * icall.c
17240         (ves_icall_MonoGenericInst_GetParentType): New interncall.
17241         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
17242
17243 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
17244
17245         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
17246         valuetype marshalling.
17247
17248 2004-02-06  Martin Baulig  <martin@ximian.com>
17249
17250         * class.c
17251         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
17252         (my_mono_class_from_generic_parameter): Likewise.
17253
17254 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
17255
17256         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
17257         contents of the symbol files lazily.
17258
17259         * object.h (MonoThread): Add 'name' and 'name_len' fields.
17260
17261         * threads.h threads.c icall.c: New icalls for getting and setting the
17262         threads name.
17263
17264 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
17267         Raise an exception when the domain is not found.
17268
17269 2004-02-03  Martin Baulig  <martin@ximian.com>
17270
17271         * reflection.c (mono_image_get_methodspec_token): Use the
17272         uninflated signature; fixes gen-33.
17273
17274 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
17275
17276         * gc.c threads.c: Make the finalizer thread a normal managed thread so
17277         the finalizer code can use thread functionality.
17278
17279         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
17280         the finalizer thread.
17281
17282         * threads.c: Make some functions more robust.
17283
17284         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
17285
17286         * metadata.h: Add new marshalling conventions.
17287
17288         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
17289         stringbuilder marshalling. Fixes #53700.
17290
17291         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
17292
17293         * reflection.c (mono_image_get_type_info): Save declarative security
17294         info.
17295
17296         * reflection.c (mono_image_get_field_info): Handle uninitialized 
17297         unmanaged fields as well.
17298
17299         * appdomain.c: Bump corlib version.
17300
17301 2004-02-01  Martin Baulig  <martin@ximian.com>
17302
17303         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
17304         method type arguments.  
17305
17306 2004-01-30  Duncan Mak  <duncan@ximian.com>
17307
17308         * marshal.h: Add prototype for
17309         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
17310         and
17311         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
17312         fix the build.
17313
17314 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
17315
17316         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
17317         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
17318
17319 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * marshal.c (mono_marshal_get_native_wrapper): Add support for
17322         custom marshalling of valuetypes.
17323
17324         * marshal.c: Fix some warnings.
17325
17326 2004-01-29  Martin Baulig  <martin@ximian.com>
17327
17328         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
17329         for generic method parameters.
17330
17331         * reflection.c (method_encode_methodspec): Write the uninflated
17332         signature into the methodspec table.
17333         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
17334         is always the uninflated method.
17335         (reflection_methodbuilder_to_mono_method): Copy the generic
17336         parameters from the MethodBuilder into `header->gen_params'.
17337
17338 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
17339
17340         * class.c (mono_class_from_generic_parameter): Fix warning.
17341
17342 2004-01-27  Martin Baulig  <martin@ximian.com>
17343
17344         * class.c (mono_class_from_generic_parameter): Don't create
17345         `klass->methods' here.  
17346
17347 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
17348
17349         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
17350         extension since it does not work with libraries named lib<FOO>.dll.so.
17351
17352 2004-01-25  Martin Baulig  <martin@ximian.com>
17353
17354         * class.c (mono_class_inflate_generic_type): Added support for
17355         MONO_TYPE_GENERICINST.
17356
17357         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
17358         inflate methods on open constructed types.      
17359
17360 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17361
17362         * object.c: fire ProcessExit event in the root AppDomain after running
17363         Main. Fixes bug #53299.
17364
17365 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
17366
17367         * socket-io.c: include the new socket-wrappers.h header.
17368         Use the wrappers instead of the unix socket functions to make the code
17369         more clear.
17370
17371 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
17372
17373         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
17374
17375         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
17376         Fixes #22532.
17377
17378 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
17379
17380         * reflection.c (mono_image_create_pefile): Handle the case when the
17381         entry point is not a MethodBuilder.
17382
17383         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
17384         field to ReflectionMethod since it is not allways a builder.
17385
17386         * reflection.c (type_get_fully_qualified_name): New helper function to
17387         return the fully qualified name of a type.
17388
17389         * reflection.c (encode_marshal_blob): Always emit the fully qualified
17390         type name for custom marshallers.
17391
17392         * reflection.c (mono_marshal_spec_from_builder): Ditto.
17393
17394         * class.c (mono_class_setup_vtable): If a parent class already 
17395         implements an interface, use the implementing methods from that class.
17396         Fixes #53148.
17397
17398 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17399
17400         * threadpool.c: just return instead of ExitThread to allow for thread
17401         clean up earlier.
17402
17403 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
17404
17405         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
17406         when closing resource modules.
17407
17408         * reflection.c (mono_image_create_pefile): Handle the case when the
17409         entry point is not a MethodBuilder.
17410
17411         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
17412         field to ReflectionMethod since it is not allways a builder.
17413
17414 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
17415
17416         * marshal.c (mono_marshal_get_managed_wrapper): 
17417         mono_marshal_alloc takes native int so CONV_I
17418         the arg for 64bits.
17419
17420 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
17421
17422         * reflection.c (fixup_cattrs): New function to fixup the methoddef
17423         tokens in the cattr table. Fixes #53108.
17424
17425 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17426
17427         * loader.c: don't trim ".dll" before looking up in the config file.
17428         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
17429
17430 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
17431
17432         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
17433         Return the module which contains the resource as well.
17434         (ves_icall_System_Reflection_Module_Close): New icall.
17435
17436         * appdomain.c: Bump corlib version number.
17437
17438         * image.c (mono_image_addref): New public function.
17439
17440         * assembly.c: Call mono_image_addref.
17441
17442         * reflection.c (mono_module_get_object): Increase reference count of 
17443         the image.
17444
17445         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
17446         Fixes #22532.
17447
17448         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
17449         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
17450         proper exceptions on DllImport problems.
17451
17452 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
17453
17454         * class.c, metadata.c: eliminate CSIZE macro.
17455
17456 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
17457
17458         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
17459         * object.h: Added async_callback field in MonoAsyncResult.
17460         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
17461         * verify.c: Added async_callback in MonoAsyncResult layout.
17462
17463 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
17464
17465         * reflection.c (mono_reflection_get_custom_attrs): Add support
17466         for Modules.
17467
17468 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
17469
17470         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
17471         marshalling.
17472         (mono_marshal_method_from_wrapper): Add null pointer check.
17473
17474 2004-01-16  Martin Baulig  <martin@ximian.com>
17475
17476         * debug-mono-symfile.h: Set version number to 36 and reflect
17477         latest symbol writer changes.
17478
17479 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
17480
17481         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
17482         multi-dimensional arrays.
17483         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
17484         (mono_class_from_mono_type): Use bounded_array_class_get.
17485         
17486         * class.c (mono_bounded_array_class_get): New function which takes
17487         a 'bounded' bool argument to distinguish vectors from one dimensional
17488         arrays.
17489
17490         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
17491         bounded_array_class_get if the array has bounds.
17492
17493         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
17494         Search modules loaded using AssemblyBuilder:AddModule as well.
17495
17496 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17497
17498         * appdomain.c: increased corlib version.
17499         * filewatcher.c: removed g_print.
17500         * icall.c:
17501         (get_property_info): only allocate what is actually requested.
17502         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
17503
17504 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17505
17506         * Makefile.am: added filewatcher.[ch]
17507         * filewatcher.[ch]: FileSystemWatcher runtime support.
17508         * icall.c: added new FSW icalls.
17509
17510 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17511
17512         * string-icalls.c: fix stringbuilder regression as suggested by
17513         Iain McCoy <iain@mccoy.id.au>.
17514
17515 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
17516
17517         * process.c (process_read_stringtable_block): Recognize '007f' as
17518         a language neutral stringtable block.
17519
17520 2004-01-12  Patrik Torstensson
17521
17522         * object.h (MonoStringBuilder) : Changed layout to support our
17523         new stringbuilder class.
17524         * marshal.c: Change marshalling to support the new layout of 
17525         string builder.
17526         * appdomain.c: increased version number because new layout of
17527         string builder.
17528
17529 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
17530
17531         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
17532         assembly name as an string instead of an AssemblyName, since it is
17533         easier to extract info from it.
17534
17535         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
17536         the culture subdirectories too. Fixes #52231.
17537
17538 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17539
17540         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
17541         It takes 2 new parameters with an optional name for the method to look
17542         for and case ignoring info.
17543
17544         * threadpool.c: removed unused variable.
17545
17546 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17547
17548         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
17549         It takes 2 new parameters with an optional name for the property to look
17550         for and case ignoring info.
17551         Fixes bug #52753.
17552
17553 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
17556         Fix #52451.
17557
17558 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17559
17560         * appdomain.c:
17561         * assembly.c: escape the uri before passing it to g_filename_from_uri.
17562         Fixes bug #52630.
17563
17564 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * reflection.c: Add support for more than one unmanaged resource.
17567
17568         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
17569         in field->def_value, as done in all other cases.
17570
17571         * reflection.c (mono_reflection_get_custom_attrs): Add support for
17572         TypeBuilders.
17573
17574         * reflection.c (mono_reflection_create_runtime_class): Remove 
17575         errorneous assignment to klass->element_class, since it is already
17576         done in mono_reflection_setup_internal_class.
17577
17578 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17579
17580         * gc.c: added missing LeaveCriticalSection.
17581         * icall.c: indented a couple of lines.
17582         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
17583         if we call EndInvoke inside a callback. Fixes bug #52601.
17584
17585 2004-01-07  Martin Baulig  <martin@ximian.com>
17586
17587         * mono-debug-debugger.h
17588         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
17589
17590 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
17591
17592         * appdomain.c: Use messages in NotImplementedException.
17593
17594         * exception.c (mono_get_exception_not_implemented): Now this takes
17595         a message argument.
17596
17597         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
17598         exception instead of g_asserting an aborting when something is not
17599         implemented.
17600
17601         Add some inline docs.
17602
17603 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
17604
17605         * reflection.h: Update after changes to object layout.
17606
17607         * reflection.c: Implement saving of unmanaged aka win32 resources.
17608
17609         * appdomain.c: Bump version number.
17610
17611         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
17612         Handle missing domains gracefully.
17613
17614 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
17615
17616         * file-io.c : On Windows, there are much more invalid_path_chars.
17617
17618 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
17619
17620         * class.h, object.c: prepare for GetType () speedup.
17621
17622 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
17623
17624         * profiler.c: workaround for --profile null reference exception on
17625           cygwin. Patch by Patrik Torstensson.
17626
17627 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
17628
17629         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
17630         make work for unaligned access.
17631
17632 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
17633
17634         * class.c: small cleanup (class->fields [i] -> field).
17635         * image.c: check address of metadata is valid.
17636
17637 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
17638
17639         * assembly.h assembly.c (mono_assembly_loaded): New public function to
17640         search the list of loaded assemblies.
17641
17642         * reflection.c (mono_reflection_type_from_name): Use 
17643         mono_assembly_loaded instead of mono_image_loaded.
17644
17645         * reflection.c: Fix warnings.
17646
17647 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
17648
17649         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
17650         is dynamic. This is needed since an assembly can contain both dynamic and
17651         non-dynamic images.
17652
17653         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
17654         assembly->dynamic.
17655
17656         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
17657
17658         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
17659         to store modules loaded using AddModule.
17660
17661         * reflection.c (mono_image_fill_file_table): Generalize this so it works
17662         on Modules.
17663
17664         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
17665
17666         * reflection.c (mono_image_fill_export_table_from_module): New function to
17667         fill out the EXPORTEDTYPES table from a module.
17668
17669         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
17670         into a separate function. Also handle loaded non-dynamic modules.
17671
17672         * reflection.c (mono_image_basic_init): Fix memory allocation.
17673
17674         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17675
17676         * assembly.c (mono_assembly_load_references): Make this public.
17677
17678 2003-12-19  Martin Baulig  <martin@ximian.com>
17679
17680         * class.c (mono_class_initialize_generic): Made this static, take
17681         a `MonoGenericInst *' instead of a `MonoClass *'.
17682         (mono_class_from_generic): Call mono_class_initialize_generic()
17683         unless we're already initialized or being called from
17684         do_mono_metadata_parse_generic_inst().
17685
17686         * class.h (MonoGenericInst): Added `initialized' and
17687         `init_pending' flags.
17688
17689         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
17690         `mono_class_init (gklass)' or mono_class_initialize_generic()
17691         here; set `generic_inst->init_pending' while parsing the
17692         `type_argv'.
17693
17694 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
17695
17696         * locales.c: include string.h for memxxx prototypes
17697
17698 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
17699
17700         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
17701         constructor when accessing literal fields.
17702
17703 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
17704
17705         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17706
17707         * reflection.c (assembly_add_resource_manifest): New function to fill
17708         the MANIFESTRESOURCE table.
17709
17710         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
17711
17712         * reflection.h: Update to changes in class layout.
17713
17714         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
17715         Reenable call to mono_runtime_is_shutting_down ().
17716
17717         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
17718         determine if the runtime is shutting down.
17719
17720 2003-12-16  Jackson Harper <jackson@ximian.com>
17721
17722         * icall.c: comment out call to mono_runtime_is_shutting_down to
17723         fix build.
17724         
17725 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
17726
17727         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
17728         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
17729
17730 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
17731
17732         * reflection.c: move definition of swap_with_size
17733         to before its first call
17734
17735 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
17736
17737         * appdomain.c (mono_runtime_is_shutting_down): New public function.
17738
17739         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
17740         icall.
17741
17742         * object.c: Fix warnings.
17743
17744         * icall.c (ves_icall_Type_Get...): Only consider inherited static
17745         members if FlattenHierarchy is set.
17746
17747         * reflection.c (mono_image_add_decl_security): New function to emit
17748         declarative security.
17749
17750         * reflection.h reflection.c: Add support for declarative security.
17751
17752         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
17753         
17754 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
17755
17756         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
17757         
17758         * appdomain.c verify.c: Moved corlib version checking into its own
17759         function in appdomain.c since it needs to create vtables etc.
17760
17761 2003-12-13  Patrik Torstensson <p@rxc.se>
17762
17763         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
17764         instead of unwrapped server.
17765
17766 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * verify.c (check_corlib): Fix field index.
17769
17770 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
17771
17772         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
17773         GetGacPath icall.
17774
17775 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
17776
17777         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
17778         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
17779         cope with sizeof(size_t) != sizeof(guint32).
17780
17781 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17782
17783         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
17784         in case of failure.
17785
17786 2003-12-10  Mark Crichton <crichton@gimp.org>
17787
17788         * icall.c: removed the GetNonZeroBytes.  We now handle this case
17789         in managed code.
17790
17791         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
17792
17793 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
17794
17795         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
17796         marked as deleted.
17797
17798 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * verify.c (check_corlib): Handle the case when the version field is 
17801         initialized by a static constructor.
17802
17803 2003-12-08  Patrik Torstensson  <p@rxc.se>
17804
17805     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
17806
17807 2003-12-08  Martin Baulig  <martin@ximian.com>
17808
17809         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
17810         a MonoReflectionGenericParameter, also take the parameter index
17811         and name as arguments.
17812         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
17813         (ves_icall_MonoGenericParam_initialize): New interncall.
17814         (ves_icall_Type_make_byref_type): New interncall.
17815
17816         * reflection.h (MonoReflectionGenericParam): Derive from
17817         MonoReflectionType, not just from MonoObject.  Added `refobj' and
17818         `index' fields.
17819
17820         * reflection.c (mono_reflection_define_generic_parameter): Create
17821         and return a new MonoReflectionGenericParam; don't initialize the
17822         constraints here.
17823         (mono_reflection_initialize_generic_parameter): New public method;
17824         initializes the constraints and creates the `param->pklass'.
17825
17826 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
17827
17828         * reflection.h reflection.c: Use the new fields 'num_types', 
17829         'num_fields' and 'num_methods' to track the number of types etc.
17830
17831         * verify.c (check_corlib): Check corlib version number.
17832
17833 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
17834
17835         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
17836         function works on all methods.
17837
17838 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
17839
17840         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
17841         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
17842         the custom_type_info flag of the transparent proxy.
17843         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
17844         objects that supports IRemotingTypeInfo.
17845         * object.h: Added custom_type_info field in transparent proxy.
17846
17847 2003-12-06  Martin Baulig  <martin@ximian.com>
17848
17849         * class.c (mono_class_create_from_generic): Removed.
17850         (mono_class_from_generic): Check `ginst->klass' before doing
17851         anything else.  This is important to fully support "recursive"
17852         generic types.
17853
17854         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
17855         empty `generic_inst->klass' before doing anything else.
17856
17857 2003-12-06  Dick Porter  <dick@ximian.com>
17858
17859         * verify.c: 
17860         * object.h:
17861         * icall.c:
17862         * locales.c: Use C structs to access class fields.  Don't do a
17863         conversion between MonoString and UChar because both are
17864         platform-endian UTF-16.  Compare now takes startindex and count
17865         parameters.  Add a char overload for IndexOf.  Speed up the
17866         invariant string IndexOf.
17867
17868 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
17869
17870         * Makefile.am (monosn_LDADD): Fix parallel build.
17871
17872 2003-12-04  Martin Baulig  <martin@ximian.com>
17873
17874         * icall.c
17875         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
17876         (ves_icall_Type_make_array_type): New interncall.       
17877
17878 2003-12-04  Martin Baulig  <martin@ximian.com>
17879
17880         * locales.c: also change it in the !HAVE_ICU case.
17881
17882 2003-12-04  Dick Porter  <dick@ximian.com>
17883
17884         * icall.c:
17885         * locales.c: construct_compareinfo is now in CompareInfo, not
17886         CultureInfo.
17887
17888 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
17889
17890         * image.c (mono_image_load_file_for_image): Cache loaded images in the
17891         image->files array.
17892
17893         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
17894         table as well.
17895
17896         * assembly.c (mono_assembly_load_references): Only load references
17897         once.
17898
17899         * class.c (mono_class_from_name): Avoid linear search of the 
17900         EXPORTEDTYPE table.
17901
17902         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
17903
17904 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
17905
17906         * image.h (MonoImage): Add 'field_cache' field.
17907
17908         * loader.c (mono_field_from_token): Cache field lookups.
17909         
17910         * reflection.c (mono_module_get_object): Fix name property.
17911
17912         * icall.c (ves_icall_get_enum_info): Update after changes to 
17913         mono_metadata_get_constant_index ().
17914
17915         * icall.c: Get rid of get_type_info icall, use a separate icall for
17916         each type property to avoid needless memory allocations. Fixes #51514.
17917
17918         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
17919         to avoid needless binary searches.
17920
17921         * class.c (class_compute_field_layout): Move the initialization of
17922         field->def_value to mono_class_vtable ().
17923
17924         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
17925         non-corlib types.
17926
17927         * object.c (mono_object_allocate): Make it inline.
17928
17929         * object.c (mono_object_allocate_spec): Make it inline.
17930         
17931 2003-12-02  Dick Porter  <dick@ximian.com>
17932
17933         * locales.c (create_NumberFormat): NumberFormatInfo construction.
17934         Patch by Mohammad DAMT (mdamt@cdl2000.com).
17935
17936 2003-12-01  Dick Porter  <dick@ximian.com>
17937
17938         * threads.c: Fix signature and call in CreateMutex and
17939         CreateEvent.
17940
17941 2003-12-01  Dick Porter  <dick@ximian.com>
17942
17943         * icall.c: 
17944         * locales.c: Implement string compares and searching
17945
17946         * object.h: Add extra Thread field
17947
17948 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
17949
17950         * reflection.c (fixup_method): Add support for MonoCMethod.
17951
17952 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
17953
17954         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
17955
17956         * reflection.c (assembly_name_to_aname): Allow extra characters in
17957         assembly names. Fixes #51468.
17958
17959 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
17960
17961         * exception.c (mono_exception_from_name_domain): New helper function.
17962
17963         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
17964         exception object in the correct domain.
17965
17966         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
17967         formatting + make a copy a the input data.
17968
17969         * loader.c (mono_get_method_from_token): Methods which contain
17970         native code do not have entries in the ImplMap.
17971
17972         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
17973         Thanks to Gonzalo for spotting this.
17974         
17975         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
17976         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
17977
17978         * assembly.h (mono_assembly_load_from): Split the second part of 
17979         assembly loading into a new public function.
17980
17981         * exception.h (mono_get_exception_bad_image_format): New function.
17982
17983 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
17984
17985         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
17986         Enumerate all modules inside a dynamic assembly. Fixes #51293.
17987         
17988         * icall.c: Add new icall for creating dynamic methods.
17989
17990         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
17991
17992         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
17993
17994         * reflection.c (mono_reflection_create_dynamic_method): New icall to
17995         create a dynamic method.
17996
17997         * reflection.c (resolve_object): New helper function.
17998
17999         * reflection.c: Generalize ReflectionMethodBuilder and the functions
18000         which manipulate it so they can also work on dynamic methods.
18001
18002         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
18003         creating the MonoReflectionMethodAux structure if it is not needed.
18004         
18005         * reflection.h verify.c: Update after changes to object layout.
18006
18007         * reflection.c (method_builder_encode_signature): Fix compilation on
18008         gcc 2.95.x.
18009
18010 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
18011
18012         * appdomain.h: Added support for context static fields. Added static_data
18013           field to MonoAppContext and renamed thread_static_fields to a more
18014           generic special_static_fields in MonoAppDomain, since it can now contain
18015           context static fields.
18016         * domain.c: Updated hashtable name.
18017         * object.c: Replaced field_is_thread_static() for a more generic
18018           field_is_special_static() which also checks for context static attribute.
18019           In mono_class_vtable(), added support for static context fields.
18020         * threads.c: Changed methods that manage thread static fields to more
18021           generic methods so they can be reused both for thread and context static
18022           data.
18023         * threads.h: Declared some new methods.
18024
18025 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
18026
18027         * reflection.h: Update after changes to the managed types.
18028
18029         * reflection.c (encode_custom_modifiers): New helper function.
18030
18031         * reflection.c (method_encode_signature): Emit custom modifiers.
18032
18033         * reflection.c (field_encode_signature): Emit custom modifiers.
18034
18035 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
18036
18037         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
18038
18039         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
18040         implementation.
18041
18042         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
18043         icall.
18044
18045         * object.c (mono_field_get_value_object): New function.
18046
18047         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
18048         specific.
18049
18050 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
18051
18052         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
18053         return a preallocated out-of-memory exception instance.
18054
18055         * object.c (out_of_memory): Use the new function.
18056
18057         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
18058         flag is before the custom modifiers. Fixes #49802.
18059
18060 2003-11-16  Martin Baulig  <martin@ximian.com>
18061
18062         * class.c (mono_class_is_open_constructed_type): Implemented the
18063         MONO_TYPE_GENERICINST case.
18064
18065 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
18066
18067         * assembly.c (mono_assembly_fill_assembly_name): New function to
18068         fill out the MonoAssemblyName structure.
18069         (mono_assembly_open): Use the new function.
18070
18071         * icall.c (fill_reflection_assembly_name): New helper function.
18072
18073         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
18074         new function.
18075
18076         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
18077
18078 2003-11-15  Martin Baulig  <martin@ximian.com>
18079
18080         * class.c (mono_class_is_open_constructed_type): New public
18081         function; checks whether a type is an open constructed type,
18082         ie. whether it still contains type parameters.
18083         (mono_class_inflate_generic_type): If we're a type parameter and
18084         the inflated type is also a MONO_TYPE_(M)VAR, return the original
18085         type.
18086
18087         * class.h (MonoGenericInst): Added `guint32 is_open'.
18088
18089         * loader.c (method_from_methodspec): Check whether we're an open
18090         or closed constructed type and set `ginst->is_open'.
18091
18092         * reflection.c (mono_reflection_bind_generic_parameters): Check
18093         whether we're an open or closed constructed type and set
18094         `ginst->is_open'.
18095         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
18096         from open constructed types.
18097
18098 2003-11-15  Martin Baulig  <martin@ximian.com>
18099
18100         * reflection.c (mono_reflection_bind_generic_parameters): If we're
18101         a generic instance (instead of a generic type declaration) with
18102         unbound generic parameters, bind them to our actual types.
18103
18104 2003-11-14  Martin Baulig  <martin@ximian.com>
18105
18106         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
18107
18108         * reflection.c (mono_reflection_bind_generic_parameters): If we're
18109         an interface type, populate `res->interfaces' with instantiated
18110         versions of all the interfaces we inherit.
18111
18112 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
18113
18114         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
18115         when MONO_PATH is set but doesn't contain the install dir.
18116
18117 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18118
18119         * icall.c:
18120         (ves_icall_Type_GetInterfaces): don't return an interface twice when
18121         it's also implemented in base classes. Fixes bug #50927.
18122
18123 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
18124
18125         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
18126         if this method is called from a finalizer. Fixes #50913.
18127
18128 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
18129
18130         * threads.c: Implement VolatileRead/VolatileWrite
18131
18132         * icall.c: Add new icalls for VolatileRead/VolatileWrite
18133
18134 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18135
18136         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
18137         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
18138         2.95.3.
18139
18140         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
18141         from Peter Ross (pro@missioncriticalit.com).
18142         
18143 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
18144
18145         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
18146
18147 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18148
18149         * assembly.c (mono_assembly_load_references): Disable check because it
18150         triggers on older corlibs which lots of people have.
18151
18152 2003-11-12  Jackson Harper  <jackson@ximian.com>
18153
18154         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
18155         load corlib.dll if mscorlib.dll is not found.
18156         * assembly.h: Remove corlib name define.
18157         * class.c:
18158         * domain.c:
18159         * image.c: Change corlib name to mscorlib.
18160         
18161 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
18162
18163         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
18164
18165 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
18166
18167         * appdomain.h: Added loader_optimization here to sync with the C#
18168         code, and add disallow_binding_redirects field.
18169
18170 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
18171
18172         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
18173
18174         * reflection.c (mono_image_build_metadata): Fix crash on modules
18175         with no types.
18176
18177         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
18178
18179         * icall.c (ves_icall_get_method_info): Return callingConvention as
18180         well.
18181
18182         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
18183         namespaces from the EXPORTEDTYPE table as well.
18184
18185         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
18186         from all modules inside the assembly.
18187         
18188 2003-11-11  Martin Baulig  <martin@ximian.com>
18189
18190         * reflection.c (mono_reflection_bind_generic_parameters): Make
18191         this work for interfaces.
18192
18193 2003-11-11  Martin Baulig  <martin@ximian.com>
18194
18195         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
18196
18197 2003-11-11  Martin Baulig  <martin@ximian.com>
18198
18199         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
18200         "MonoInflatedMethod" and "MonoInflatedCtor".
18201
18202 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
18203
18204         * reflection.c (resolution_scope_from_image): Use the assembly table
18205         from the manifest module, since other modules don't have it.
18206
18207         * debug-helpers.c (mono_type_full_name): New helper function.
18208
18209         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
18210
18211         * image.c (mono_image_load_file_for_image): New public function which
18212         is a replacement for the load_file_for_image in class.c.
18213
18214         * assembly.c (mono_assembly_load_module): A wrapper for the function
18215         above which does assembly association and reference loading too.
18216
18217         * class.c (mono_class_from_name): Call mono_assembly_load_module.
18218
18219 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18220
18221         * appdomain.c: not all of the attributes for the full assembly name
18222         are required and the order doesn't matter. Fixes bug #50787.
18223
18224 2003-11-10  Dick Porter  <dick@ximian.com>
18225
18226         * locales.c: Use platform-endian UTF16
18227
18228 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
18229
18230         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
18231         
18232 2003-11-10  Martin Baulig  <martin@ximian.com>
18233
18234         * metadata.c
18235         (mono_metadata_load_generic_params): Make this actually work.
18236
18237         * reflection.c (mono_reflection_bind_generic_parameters): If our
18238         parent is a generic instance, pass all the `types' to it, no
18239         matter whether it has the same number of type parameters or not.
18240
18241 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
18242
18243         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
18244
18245         * assembly.c (mono_assembly_load_references): Move the image<->assembly
18246         assignment code to this function so it gets called recursively for all
18247         modules.
18248
18249         * image.c (load_modules): Remove the assembly assignment since it is
18250         now done by mono_assembly_load_references.
18251         
18252         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
18253         Add 'module' argument.
18254         (mono_module_get_types): New helper function.
18255         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
18256
18257 2003-11-08  Martin Baulig  <martin@ximian.com>
18258
18259         * class.c (mono_class_inflate_generic_method): Interface method
18260         don't have a header.
18261
18262         * reflection.c (mono_image_get_methodspec_token): Take an
18263         additional `MonoGenericInst *' argument instead of reading it from
18264         the header; this is necessary to support interfaces.
18265         (mono_image_create_token): Pass the `MonoGenericInst *' from the
18266         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
18267         (inflated_method_get_object): Take an additional `MonoGenericInst *'
18268         argument.
18269
18270         * reflection.h (MonoReflectionInflatedMethod): Added
18271         `MonoGenericInst *ginst'.
18272
18273 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
18274
18275         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
18276
18277 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
18278
18279         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
18280
18281 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
18282
18283         * reflection.c 
18284         (reflection_methodbuilder_from_method_builder):
18285         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
18286         initialize a ReflectionMethodBuilder structure.
18287         (mono_image_get_methodbuilder_token):
18288         (mono_image_get_ctorbuilder_token): New functions to emit memberref
18289         tokens which point to types in another module inside the same assembly.
18290
18291         * reflection.c: Use the new helper functions.
18292         
18293         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
18294
18295         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
18296         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
18297
18298         * reflection.c (resolution_scope_from_image): Emit a moduleref if
18299         neccesary.
18300
18301         * reflection.c (mono_image_build_metadata): Emit metadata only for the
18302         current module. Emit the manifest only for the main module.
18303
18304         * reflection.c (mono_image_create_token): Add assertion when a 
18305         memberref needs to be created.
18306
18307         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
18308
18309         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
18310         larger buffer for the custom attribute blob. Fixes #50637.
18311         
18312 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18313
18314         * threadpool.c: notify listener on async processing handles after
18315         invoking the async callback. Thanks to Zoltan.
18316
18317 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
18320         avoid code duplication.
18321
18322         * reflection.h (MonoDynamicImage): New type which is currently unused,
18323         but will be used through the ref.emit code in place of 
18324         MonoDynamicAssembly.
18325
18326         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
18327         object layout.
18328
18329         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
18330         a MonoDynamicImage instead of just a MonoImage.
18331         
18332         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
18333         icalls to ModuleBuilder but keep their semantics, so they will work
18334         with moduleb->assemblyb. This will change later.
18335         
18336 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
18337
18338         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
18339         object layout.
18340
18341         * reflection.c (mono_image_build_metadata): Avoid creation of a default
18342         main module, since it is now done by the managed code.
18343
18344 2003-11-03  Martin Baulig  <martin@ximian.com>
18345
18346         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
18347         `ginst->klass' here.
18348         (method_encode_methodspec): Don't use the `ginst->generic_method's
18349         klass if it's a generic instance, use `ginst->klass' in this case.
18350
18351 2003-11-03  Martin Baulig  <martin@ximian.com>
18352
18353         * reflection.c (mono_image_get_generic_method_param_info):
18354         Removed, use mono_image_get_generic_param_info() instead.
18355         (mono_image_get_type_info): Write the GenericParam table before
18356         the Method table.  This is neccessary because in the GenericParam
18357         table, type parameters of the class (ie. '!0' etc.) must come
18358         before the ones from its generic methods (ie. '!!0' etc).
18359
18360 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
18361
18362         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
18363
18364 2003-11-02  Martin Baulig  <martin@ximian.com>
18365
18366         * reflection.c (create_generic_typespec): Take a
18367         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
18368         the generic parameters from it.
18369
18370 2003-11-02  Martin Baulig  <martin@ximian.com>
18371
18372         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
18373         instead of a `MonoClassField *' since we just need the type.
18374         (create_generic_typespec): New static function.  Creates a
18375         TypeSpec token for a generic type declaration.
18376         (mono_image_get_generic_field_token): New static function.
18377         (mono_image_create_token): If we're a FieldBuilder in a generic
18378         type declaration, call mono_image_get_generic_field_token() to get
18379         the token.
18380
18381 2003-11-02  Martin Baulig  <martin@ximian.com>
18382
18383         * reflection.h
18384         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
18385         `MonoReflectionGenericInst *declaring_type' and
18386         `MonoReflectionGenericInst *reflected_type' fields.
18387
18388         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
18389         `MonoReflectionGenericInst *declaring_type' and a
18390         `MonoReflectionGenericInst *reflected_type' argument instead of a
18391         single `MonoReflectionGenericInst *type' one.  Set
18392         `res->declaring_type' and `res->reflected_type' from them.
18393         (mono_reflection_inflate_field): Likewise.      
18394
18395 2003-11-02  Martin Baulig  <martin@ximian.com>
18396
18397         * class.c (mono_class_setup_vtable): Don't store generic methods
18398         in the vtable.  
18399
18400 2003-11-02  Martin Baulig  <martin@ximian.com>
18401
18402         * reflection.h (MonoReflectionGenericInst): Added
18403         `MonoReflectionType *declaring_type'.
18404
18405         * reflection.c (mono_reflection_bind_generic_parameters): Use
18406         `if (tb->parent)' instead of `klass->parent'.
18407
18408 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
18409
18410         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
18411         with an empty ASSEMBLY table.
18412
18413         * reflection.c (mono_image_build_metadata): Avoid using the same loop
18414         variable in the inner and outer loops.
18415
18416 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
18417
18418         * metadata.h (mono_metadata_make_token): Put parentheses around macro
18419         argument.
18420
18421         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
18422         
18423         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
18424         icalls. Instead, do everything in managed code. This is needed since
18425         it is hard to restore the original domain etc. in unmanaged code in the
18426         presence of undeniable exceptions.
18427
18428         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
18429         New icalls to push and pop appdomain refs.
18430
18431 2003-10-31  Martin Baulig  <martin@ximian.com>
18432
18433         * class.c (inflate_generic_type): Renamed to
18434         mono_class_inflate_generic_type() and made it public.
18435
18436         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
18437         New interncall.
18438
18439         * loader.c (mono_field_from_memberref): Also set the retklass for
18440         typespecs.
18441
18442         * fielder.c (mono_image_get_inflated_field_token): New static
18443         method; creates a metadata token for an inflated field.
18444         (mono_image_create_token, fixup_method): Added support for
18445         "MonoInflatedField".
18446         (fieldbuilder_to_mono_class_field): New static function.
18447         (mono_reflection_inflate_field): New public function.
18448
18449         * reflection.h
18450         (MonoReflectionGenericInst): Added `MonoArray *fields'.
18451         (MonoReflectionInflatedField): New typedef.     
18452
18453 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
18454
18455         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
18456         for Solaris and other platforms without s6_addr16
18457
18458 2003-10-30  Martin Baulig  <martin@ximian.com>
18459
18460         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
18461         argument instead of two.
18462         (mono_class_inflate_generic_signature): Likewise.
18463         (inflate_generic_header): Likewise.
18464         (mono_class_inflate_generic_method): Likewise.  In addition, if
18465         `ginst->klass' is set, it becomes the new `method->klass'.
18466
18467         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
18468         field.
18469
18470         * reflection.c (encode_generic_method_sig): Write a 0xa as the
18471         first byte. [FIXME]
18472         (method_encode_methodspec): If we have generic parameters, create
18473         a MethodSpec instead of a MethodRef.
18474         (fixup_method): Added support for "MonoInflatedMethod" and
18475         "MonoInflatedCtor".
18476         (mono_image_create_token): Added support for "MonoInflatedMethod"
18477         and "MonoInflatedCtor".
18478         (inflated_method_get_object): New static function; returns a
18479         managed "System.Reflection.MonoInflatedMethod" object.
18480         (mono_reflection_bind_generic_method_parameters): Return a
18481         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
18482         (mono_reflection_inflate_method_or_ctor): Likewise.
18483         (mono_image_get_generic_method_param_info): Initialize unused
18484         fields to zero.
18485         (mono_image_get_generic_param_info): Likewise.
18486
18487         * reflection.h (MonoReflectionInflatedMethod): New public
18488         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
18489         "S.R.MonoInflatedCtor" classes.
18490
18491         * loader.c (method_from_memberref): If we're a TypeSpec and it
18492         resolves to a generic instance, inflate the method.
18493
18494 2003-10-28  Dick Porter  <dick@ximian.com>
18495
18496         * object.c (mono_runtime_run_main): Convert command-line arguments
18497         into utf8, falling back to the user's locale encoding to do so.
18498
18499 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
18500
18501         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
18502         at this time.
18503
18504         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
18505
18506         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
18507         up icalls at method definition time. Partially fixes #33569.
18508
18509 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
18510
18511         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
18512         marshalling of arrays. Fixes #50116.
18513
18514         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
18515
18516         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
18517         points to a vtable in the dying appdomain.
18518
18519         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
18520         listeners into unmanaged code inside the lock.
18521
18522         * object.c (mono_class_vtable): Turn off typed allocation in non-root
18523         domains and add some comments.
18524
18525 2003-10-25  Martin Baulig  <martin@ximian.com>
18526
18527         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
18528
18529         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
18530
18531         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
18532         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
18533         currently parsing.  Create the generic class and store it in
18534         `generic_inst->klass' before parsing the type arguments.  This is
18535         required to support "recursive" definitions; see mcs/tests/gen-23.cs
18536         for an example.
18537         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
18538         to support recursive typespec entries.
18539
18540         * class.c (mono_class_setup_parent): If our parent is a generic
18541         instance, we may get called before it has its name set.
18542         (mono_class_from_generic): Splitted into
18543         mono_class_create_from_generic() and mono_class_initialize_generic().
18544
18545 2003-10-25  Martin Baulig  <martin@ximian.com>
18546
18547         * icall.c (ves_icall_Type_BindGenericParameters): Return a
18548         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
18549         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
18550         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
18551
18552         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
18553         (create_typespec): Likewise.
18554         (mono_reflection_bind_generic_parameters): Return a
18555         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
18556         (mono_reflection_inflate_method_or_ctor): New public function.
18557
18558         * reflection.h (MonoReflectionGenericInst): New typedef.        
18559
18560 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
18561
18562         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
18563         inside the domain lock. Fixes #49993.
18564         
18565         * object.c (mono_class_vtable): When typed allocation is used, 
18566         allocate vtables in the GC heap instead of in the mempool, since the
18567         vtables contain GC descriptors which are used by the collector even
18568         after the domain owning the mempool is unloaded.
18569
18570         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
18571
18572         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
18573         reflect what it does. Also invalidate mempools instead of freeing
18574         them if a define is set.
18575
18576         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
18577         of the appdomain.
18578         
18579         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
18580         hold the finalizable objects in this domain.
18581
18582         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
18583         appdomain.
18584
18585         * appdomain.c (mono_domain_set): New function to set the current
18586         appdomain, but only if it is not being unloaded.
18587
18588         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
18589         appdomain which is being unloaded.
18590         
18591         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
18592         unloading of the root appdomain.
18593
18594         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
18595         icall to execute a method in another appdomain. Intended as a 
18596         replacement for InternalSetDomain, which can confuse the code 
18597         generation in the JIT.
18598
18599         * appdomain.c (mono_domain_is_unloading): New function to determine
18600         whenever an appdomain is unloading.
18601
18602         * appdomain.c (mono_domain_unload): New function to correctly unload
18603         an appdomain.
18604
18605         * assembly.c (mono_assembly_load_references): Check that an assembly
18606         does not references itself.
18607
18608         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
18609         domain manually, it asks the finalizer thread to do it, then waits for
18610         the result. Also added a timeout.
18611
18612         * icall.c: Register the new icalls.
18613
18614         * threads.h threads.c: Export the mono_gc_stop_world and 
18615         mono_gc_start_world functions.
18616         
18617         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
18618         function to fill out the mempool with 0x2a.
18619
18620 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
18621
18622         * reflection.h (MonoReflectionMethodAux): New structure to store
18623         information which is rarely used, thus is not in the MonoMethod
18624         structure.
18625
18626         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
18627         store the aux info.
18628
18629         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
18630         and marshalling info into the aux structure.
18631
18632         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
18633         from the aux structure.
18634
18635         * loader.c (mono_method_get_param_names): Retrieve the param names from
18636         the aux structure.
18637         
18638 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * exception.h exception.c: Add AppDomainUnloadedException && fix 
18641         warning.
18642
18643 2003-10-21  Dick Porter  <dick@ximian.com>
18644
18645         * socket-io.c
18646         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
18647         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
18648
18649 2003-10-21  Martin Baulig  <martin@ximian.com>
18650
18651         * reflection.c (mono_reflection_bind_generic_parameters):
18652         `klass->parent' is NULL for interfaces.
18653
18654 2003-10-21  Martin Baulig  <martin@ximian.com>
18655
18656         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
18657
18658 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
18659
18660         * exception.c (mono_exception_from_name_msg): New helper function for
18661         creating exceptions and initializing their message field.
18662
18663         * exception.c: Simplify functions using the new helper.
18664
18665         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
18666         New function.
18667
18668         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
18669         mono_raise_exception, since otherwise gcc doesn't generate the function
18670         epilog for raise_exception, confusing the stack unwinding in the JIT.
18671         Fixes #45043.
18672
18673         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
18674         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
18675         Fixes #49499.
18676
18677 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18678
18679         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
18680         utf8.
18681
18682 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
18683
18684         * icall.c: Removed GetUninitializedObject method because
18685           AllocateUninitializedClassInstance does the same.
18686
18687 2003-10-18  Martin Baulig  <martin@ximian.com>
18688
18689         * class.c (inflate_generic_signature): Renamed to
18690         mono_class_inflate_generic_signature() and made it public.
18691         (my_mono_class_from_generic_parameter): New static function; if we
18692         don't already have the generic parameter's MonoClass, create a
18693         very simple one which is just used internally in the runtime and
18694         not passed back to managed code.
18695
18696         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
18697
18698         * metadata.h (MonoMethodSignature): Moved the
18699         `MonoGenericParam *gen_params' to the MonoMethodHeader.
18700         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
18701
18702         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
18703         ves_icall_MonoMethod_GetGenericArguments(); this is now an
18704         interncall on the MonoMethod class, not on MethodInfo.
18705         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
18706         calling mono_reflection_bind_generic_method_parameters() directly.
18707
18708         * loader.c (mono_method_get_signature): If this is a MethodSpec;
18709         return the already computed `method->signature'.
18710         (method_from_methodspec): New static function to load a method
18711         from a MethodSpec entry.
18712         (mono_get_method_from_token): Call the new method_from_methodspec()
18713         for MethodSpec tokens.  
18714         (mono_get_method_from_token): If we're a generic method, load the
18715         type parameters.
18716
18717         * reflection.c (mono_image_get_memberref_token): Allow
18718         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
18719         table.
18720         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
18721         (mono_image_create_token): First check whether it's a generic
18722         method (so we'd need to create a MethodSpec), then do the other
18723         two alternatives.
18724         (mono_reflection_bind_generic_method_parameters): Return a
18725         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
18726         called directly from the interncall.
18727
18728 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
18729
18730         * reflection.c (load_public_key): Move loading of the public key
18731         into managed code.
18732
18733         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
18734
18735         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
18736         fields.
18737
18738         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
18739         culture, hash_alg and public_key. Fixes #49555.
18740
18741 2003-10-17  Martin Baulig  <martin@ximian.com>
18742
18743         * class.h (MonoGenericInst): Moved this declaration here and added
18744         `MonoMethod *generic_method'.
18745
18746         * icall.c
18747         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
18748         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
18749
18750         * metadata.c (mono_metadata_type_equal): Two types of
18751         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
18752         index; ie. don't compare the address of the `MonoGenericParam'
18753         structure.
18754         (mono_metadata_load_generic_params): Removed the `MonoMethod
18755         *method' argument.
18756
18757         * metadata.h (MonoGenericInst): Moved declaration to class.h.
18758         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
18759
18760         * reflection.c (method_encode_signature): Encode the number of
18761         generic parameters.
18762         (encode_generic_method_sig): New static function.
18763         (method_encode_methodspec): New static function; creates an entry
18764         in the MethodSpec table for a generic method.
18765         (mono_image_get_methodspec_token): New static function.
18766         (mono_image_create_token): Call mono_image_get_methodspec_token()
18767         for generic methods.
18768         (mono_reflection_bind_generic_method_parameters): New public
18769         function.  Instantiates a generic method.
18770
18771 2003-10-16  Martin Baulig  <martin@ximian.com>
18772
18773         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
18774         *gen_params' here from MonoMethodHeader.
18775
18776         * metadata.c (mono_metadata_parse_method_signature): If we have
18777         generic parameters, initialize `method->gen_params' and then set
18778         the correct `type->data.generic_param' in all the parameters.
18779
18780 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18781
18782         * threads.c (mono_threads_get_default_stacksize): New function to 
18783         return the default stacksize.
18784
18785         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
18786         termination of the finalizer thread, since the previous method had
18787         race conditions. Fixes #49628.
18788
18789         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
18790         as for the other managed threads.
18791
18792 2003-10-16  Martin Baulig  <martin@ximian.com>
18793
18794         * class.c (inflate_generic_signature): Copy `generic_param_count'
18795         and `gen_params'.
18796
18797         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
18798         New interncall.
18799
18800         * metadata.c (mono_metadata_parse_method_signature): Actually set
18801         the `method->generic_param_count' here.
18802         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
18803
18804 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18805
18806         * object.h: Add a new field to TypedRef to simplify the implementation
18807         of the REFANY opcodes in the JIT.
18808
18809         * icall.c: Make use of the new field.
18810
18811         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
18812         dynamically.
18813
18814 2003-10-15  Martin Baulig  <martin@ximian.com>
18815
18816         * class.c (mono_class_from_gen_param): Renamed to
18817         mono_class_from_generic_parameter() and moved most of the
18818         functionality from mono_reflection_define_generic_parameter()
18819         here; ie. we create a "real" class here.
18820         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
18821         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
18822         previously been called.
18823
18824         * class.h (MonoGenericParam): Moved the declaration of this struct
18825         here from metadata.h and added `MonoMethod *method'.
18826
18827         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
18828         interncall.
18829
18830         * loader.c (mono_get_method_from_token): If we have any generic
18831         parameters, call mono_metadata_load_generic_params() to read them
18832         from the MONO_TABLE_GENERICPAR.
18833
18834         * metadata.c (mono_metadata_load_generic_params): Added
18835         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
18836
18837         * metadata.h (MonoMethodSignature): Replaced
18838         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
18839         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
18840
18841         * reflection.c (mono_reflection_define_generic_parameter): Moved
18842         most of the functionality into the new
18843         mono_class_from_generic_parameter(); set the `method' field if
18844         we're a method parameter.       
18845
18846 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
18847
18848         * marshal.c (emit_struct_conv): if native size is 0
18849         emit no code.
18850
18851 2003-10-14  Martin Baulig  <martin@ximian.com>
18852
18853         * icall.c: The generics API has changed in the spec since it was
18854         added to System.Type; these modifications make it match the spec
18855         again.
18856         (ves_icall_Type_GetGenericParameters): Renamed to
18857         `ves_icall_Type_GetGenericArguments'.
18858         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
18859         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
18860         `ves_icall_MonoType_get_HasGenericArguments'.
18861         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
18862         `ves_icall_MonoType_get_IsGenericParameter'.
18863         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
18864         this is no interncall anymore.
18865         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
18866         `ves_icall_TypeBuilder_get_IsGenericParameter'.
18867
18868 2003-10-14  Martin Baulig  <martin@ximian.com>
18869
18870         * reflection.c (mono_reflection_bind_generic_parameters): Also
18871         inflate generic methods if we're reading the class from IL.
18872
18873 2003-10-13  Martin Baulig  <martin@ximian.com>
18874
18875         * reflection.c (mono_reflection_define_generic_parameter): This
18876         method isn't called directly from the icall anymore; take a
18877         `MonoReflectionAssemblyBuilder *' so we can use this for type and
18878         method generic parameters.
18879         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
18880         (method_builder_encode_signature): Encode generic parameters.
18881         (mono_image_get_method_info): Write generic params to the
18882         MONO_TABLE_GENERICPARAM table.
18883
18884         * reflection.h (MonoReflectionMethodBuilder): Added
18885         `MonoArray *generic_params'.
18886
18887         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
18888
18889         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
18890         wrapper for mono_reflection_define_generic_parameter().
18891         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
18892
18893 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
18894
18895         * marshal.h: Add missing function to fix build.
18896
18897         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
18898         the SetLastError pinvoke attribute.
18899
18900         * marshal.c (mono_marshal_set_last_error): New helper function called
18901         by the generated code.
18902         
18903         * marshal.c (mono_mb_emit_branch): New helper function.
18904
18905         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
18906
18907         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
18908         classes as parameters and return values of delegates. Fixes #29256. 
18909
18910 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
18911
18912         * locales.c: use gint32 in non HAVE_ICU case
18913
18914 2003-10-11  Martin Baulig  <martin@ximian.com>
18915
18916         * mono-debug.c (mono_debug_add_method): Added a workaround for
18917         bug #48591.
18918
18919 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18920
18921         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
18922         delegates passed to native code must use the STDCALL calling 
18923         convention. Fixes #35987.
18924
18925 2003-10-10  Martin Baulig  <martin@ximian.com>
18926
18927         * class.c (inflate_generic_type): If we're inflating for a generic
18928         type instance (and not for a generic method), return
18929         MONO_TYPE_MVAR unchanged.
18930
18931 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18932
18933         * string-icalls.c: Join ignores null strings in the source array.
18934         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
18935         * threads.c: GetAvailableTheads is slightly more accurate.
18936
18937 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
18938
18939         * threads.h threads.c : add mono_threads_set_default_stacksize
18940         and pass default to CreateThread calls.
18941
18942 2003-10-09  Dick Porter  <dick@ximian.com>
18943
18944         * icall.c:
18945         * locales.h:
18946         * locales.c: Internal calls for constructing CultureInfo and
18947         related objects from libicu (if its available.)
18948
18949 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18950
18951         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
18952
18953 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18954
18955         * threadpool.c: added an argument to async_invoke_thread that is the
18956         item to process, pass the MonoAsyncResult to the thread start function
18957         when creating a new thread. This way we don't need to acquire any lock
18958         when we're creating a new thread. Readded a semaphore for faster
18959         response times (instead of that Sleep i added).
18960
18961 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
18962
18963         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
18964         get daylight change dates better on Windows, fix handling
18965         of platforms without tm_gmtoff.
18966
18967 2003-10-06  Martin Baulig  <martin@ximian.com>
18968
18969         * class.c (inflate_generic_method): Renamed to
18970         mono_class_inflate_generic_method() and made public.
18971         (mono_class_init): Don't inflate the generic methods here.
18972         (mono_class_from_generic): Added `gboolean inflate_methods'
18973         argument.  Inflate the methods here.
18974
18975         * loader.c (mono_method_get_param_names): Ignore instances of
18976         generic types for the moment.
18977
18978         * reflection.c (fixup_method): Added support for inflated methods.
18979         (mono_image_create_token): Use mono_image_get_methodref_token()
18980         for inflated methods.
18981         (mono_custom_attrs_from_param): Ignore instances of generic types
18982         for the moment.
18983         (mono_reflection_bind_generic_parameters): New public function.
18984         Moved all the functionality from
18985         ves_icall_Type_BindGenericParameters() here and added support for
18986         dynamic types.
18987         (mono_reflection_define_generic_parameter): Initialize
18988         `klass->methods' here.
18989
18990         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
18991         functionality into mono_reflection_define_generic_parameter().
18992         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
18993         TypeBuilder, return that TypeBuilder.
18994
18995 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18996
18997         * appdomain.c: removed mono_delegate_semaphore.
18998
18999         * threadpool.c:
19000         (mono_thread_pool_add): moved hash table creation inside and the thread 
19001         creation outside of the critical region.
19002         (mono_thread_pool_finish): removed obsolete code.
19003         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
19004         continue or exit the thread depending on the queue.
19005
19006 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
19007
19008         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
19009         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
19010         handle more bool marshalling options
19011
19012 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
19013
19014         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
19015         arrays of structs. Also add a more descriptive error message when
19016         a structure member is marshalled as LPArray.
19017
19018 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
19019
19020         * marshal.c (mono_marshal_get_native_wrapper): Add support for
19021         marshalling arrays of complex types. Fixes #29098. Also remove an
19022         usused and incomplete function.
19023
19024 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
19025
19026         * gc.c: report heap_size - free_bytes as total memory allocated
19027         (bug#49362).
19028
19029 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
19030
19031         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
19032         fix timezone handling problems on Windows.
19033         
19034         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
19035         asserts when the year is outside the range handled by ms the functions.
19036
19037         * class.c (setup_interface_offsets): If the class is an interface,
19038         fill out its interface_offsets slot.
19039
19040 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19041
19042         * threadpool.c: mark threadpool threads as background.
19043
19044 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
19045
19046         * decimal.c - define DECINLINE to nothing if not using GCC
19047
19048 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * assembly.c: More refcount fixes.
19051
19052 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19053
19054         * string-icalls.c: if we're not trimming, return the same string.
19055         When not splitting, don't create a new string.
19056
19057 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19058
19059         * image.c:
19060         (mono_image_open): increment the ref_count inside the critical section.
19061
19062 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
19063
19064         * image.c (mono_image_open): Fix reference counting bug.
19065
19066 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
19067
19068         * marshal.c (mono_marshal_type_size) struct alignment changed for 
19069         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
19070         64bits. Avoid leak in mono_marshal_get_native_wrapper when
19071         mono_lookup_pinvoke_call throws.        
19072
19073 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
19074
19075         * reflection.c (mono_reflection_parse_type): Fix #49114.
19076
19077         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
19078         temporary workaround for cygwin header problem.
19079
19080         * object.c (mono_object_isinst): Synchronize this with the code
19081         generated by the JIT for casts.
19082
19083 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
19084
19085         * reflection.c (encode_type): Fix #38332.
19086
19087 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * marshal.c (mono_marshal_method_from_wrapper): New function to return
19090         the original method from the wrapper method.
19091
19092 2003-09-25  Martin Baulig  <martin@ximian.com>
19093
19094         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
19095         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
19096         (ves_icall_Type_get_IsGenericInstance): New interncall.
19097
19098 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
19099
19100         * object.c: fix cast warning in big endian code.
19101
19102 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
19103
19104         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
19105         
19106 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19107
19108         * assembly.c: don't call check_env from mono_assembly_load. It's
19109         already done once in mono_assemblies_init and may cause headaches when
19110         multiple threads are loading assemblies.
19111
19112 2003-09-19  Martin Baulig  <martin@ximian.com>
19113
19114         * reflection.c (mono_reflection_define_generic_parameter): Don't
19115         allocate `klass->methods', set `klass->flags' to
19116         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
19117
19118 2003-09-18  Martin Baulig  <martin@ximian.com>
19119
19120         * class.c (mono_class_init): Don't create `class->methods' if it's
19121         already initialized.
19122
19123         * metadata.c (mono_metadata_load_generic_params): Make this
19124         actually work.
19125
19126         * reflection.c (mono_reflection_define_generic_parameter): Set
19127         parent class and interfaces from the constraints.
19128
19129         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
19130         to keep this struct in sync with the declaration in TypeBuilder.cs.
19131
19132 2003-09-17  Martin Baulig  <martin@ximian.com>
19133
19134         * metadata.h (MonoType): Replaced the data's `int type_param'
19135         field with `MonoGenericParam *generic_param'.
19136         (MonoGenericParam): Added `MonoClass *klass'.
19137
19138         * class.c (mono_class_from_gen_param): Removed the
19139         `MonoImage *image' and `int type_num' arguments.
19140
19141         * metadata.c (mono_metadata_parse_generic_param): New static
19142         method; creates a MonoGenericParam which just contains the index.
19143         (do_mono_metadata_parse_type): Call
19144         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
19145         MONO_TYPE_MVAR.
19146
19147         * reflection.c (mono_image_typedef_or_ref): Generic type
19148         parameters may be in the same assembly, but never use a typedef
19149         for them.
19150         (mono_reflection_define_generic_parameter): We're now creating a
19151         "real" class for the type parameter; it's now safe to call
19152         mono_class_from_mono_type() on the class'es type, it'll do the
19153         right thing.
19154
19155 2003-09-16  Martin Baulig  <martin@ximian.com>
19156
19157         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
19158         `symfile->range_entry_size' and `symfile->class_entry_size' here;
19159         the `symfile' data structure must be fully initialized before it
19160         gets added to the table.
19161
19162 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
19163
19164         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
19165
19166         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
19167         class init trampolines.
19168
19169 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
19170
19171         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
19172         to the built-in profiler to turn off time and allocation profiling
19173         respectively.
19174
19175 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
19176
19177         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
19178         g_direct_equal.
19179
19180         * debug-helpers.c (mono_method_full_name): Print the wrapper type
19181         in human readable form.
19182
19183 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
19184
19185         * reflection.c icall.c: Fixed warnings.
19186
19187         * image.c (load_class_names): Use a temporary hash table to hold the
19188         namespaces in order to avoid doing many string comparisons.
19189
19190         * image.h: Fix typo.
19191
19192         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
19193         Pass NULL instead of g_direct_equal to the GHashTable constructor 
19194         since the NULL case is short-circuited inside g_hash_table_lookup, 
19195         leading to better performance.  
19196
19197         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
19198         obtain the first custom attribute for a given index. Depends on the
19199         CustomAttribute table being sorted by the parent field.
19200
19201         * reflection.c (mono_custom_attrs_from_index): Use the new function 
19202         for better performance.
19203
19204 2003-09-07  Martin Baulig  <martin@ximian.com>
19205
19206         * class.c (mono_class_init): If we're a generic instance, inflate
19207         all our methods instead of loading them from the image.
19208         (mono_class_from_generic): Set `class->methods = gklass->methods'.
19209
19210 2003-09-07  Martin Baulig  <martin@ximian.com>
19211
19212         * mono-debug-debugger.c: Added support for constructors.
19213
19214 2003-09-06  Martin Baulig  <martin@ximian.com>
19215
19216         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
19217         New interncall.
19218
19219         * reflection.c (mono_reflection_setup_generic_class): Call
19220         ensure_runtime_vtable() to create the vtable.
19221
19222 2003-09-05  Martin Baulig  <martin@ximian.com>
19223
19224         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
19225         MONO_TYPE_MVAR.
19226
19227 2003-09-04  Martin Baulig  <martin@ximian.com>
19228
19229         * reflection.c (mono_reflection_define_generic_parameter): Generic
19230         parameters start with zero.
19231
19232 2003-09-04  Martin Baulig  <martin@ximian.com>
19233
19234         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19235
19236         * reflection.h (MonoReflectionGenericParam): New typedef.
19237         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
19238         the generic parameters from the managed TypeBuilder.
19239
19240         * reflection.c (mono_reflection_define_generic_parameter): New function.
19241         (mono_reflection_create_runtime_class): Encode generic parameters.
19242         (mono_reflection_setup_generic_class): New function; this is
19243         called after adding adding all generic params to the TypeBuilder.
19244         (encode_type): Added MONO_TYPE_VAR.
19245
19246 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * class.h class.c (mono_class_needs_cctor_run): Moved this method
19249         here from the JIT.
19250
19251         * assembly.h assembly.c: Moved the AOT loading code into an assembly
19252         load hook.
19253
19254 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * reflection.h reflection.c class.h class.c: Delete duplicate 
19257         definition of mono_type_get_name () from reflection.c and export the
19258         one in class.c.
19259
19260         * class.c: Class loading fixes from Bernie Solomon 
19261         (bernard@ugsolutions.com).
19262
19263         * reflection.c: Endianness fixes from Bernie Solomon 
19264         (bernard@ugsolutions.com).
19265         
19266 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * assembly.h assembly.c: Define a file format version for AOT
19269         libraries.
19270         
19271         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
19272
19273         * appdomain.h (MonoJitInfo): New field to determine whenever the
19274         code is domain neutral.
19275         
19276 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
19277
19278         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
19279
19280 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
19283         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
19284         Avoid caching the result since strings must be domain specific. Fixes
19285         #48050.
19286
19287 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
19288
19289         * marshal.c (mono_marshal_init): Make this callable multiple times
19290         since it is hard to find a correct place to call it.
19291
19292         * object.c (mono_runtime_class_init): Execute static constructors in
19293         the correct appdomain.
19294
19295         * image.c (build_guid_table): Handle the case when multiple images have
19296         the same GUID.
19297
19298 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19299
19300         * icall.c: added a couple of icalls for System.Web.
19301
19302 2003-08-28  Martin Baulig  <martin@ximian.com>
19303
19304         * icall.c (ves_icall_Type_BindGenericParameters): Use
19305         `klass->generic_inst' instead of `&klass->byval_arg' in the
19306         mono_type_get_object() call.  The returned type must be
19307         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
19308
19309 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
19310
19311         * NOTES: New file.
19312
19313         * object.c (mono_class_proxy_vtable): Make it thread safe.
19314
19315         * pedump.c: Fix warning.
19316
19317         * object.c appdomain.h: Get rid of metadata_section. 
19318         It is no longer needed and it was causing deadlocks with domain->lock.
19319
19320         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
19321
19322 2003-08-26  Martin Baulig  <martin@ximian.com>
19323
19324         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
19325
19326 2003-08-26  Martin Baulig  <martin@ximian.com>
19327
19328         * pedump.c (main): Call mono_metadata_init(),
19329         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
19330         and mono_loader_init().
19331
19332 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * loader.h: Add missing include to fix build.
19335
19336         * image.h: mono_image_load_references is no more.
19337
19338         * assembly.c: Reworked assembly loading to make it really thread safe.
19339         After these changes, the assembly returned by mono_assembly_open is
19340         fully initialized, i.e. all its references assemblies are loaded.
19341
19342         * assembly.c (mono_image_load_references): Renamed to 
19343         mono_assembly_load_references, and made private, since clients no
19344         longer need to call it.
19345
19346         * class.c: Removed calls to mono_assembly_load_references, since it was
19347         a source of deadlocks.
19348
19349         * loader.h loader.c class.h class.c: Protect data structures using a 
19350         new lock, the loader lock.
19351
19352         * class.c (mono_class_setup_vtable): Create temporary hash tables and
19353         GPtrArrays only when needed.
19354
19355         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
19356         into empty structures by mcs. Fixes pinvoke7.cs.
19357         
19358         * domain.c (mono_init): Call a new initialization function.
19359
19360         * appdomain.c (mono_runtime_init): Call the new initializer function
19361         of the marshal module.
19362
19363         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
19364         inserted into empty structures by mcs. Fixes pinvoke7.cs.
19365
19366         * marshal.h marshal.c: Added locks around the wrapper caches to make
19367         this module thread safe.
19368
19369         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
19370         this argument. Fixes pinvoke1.exe.
19371
19372 2003-08-25  Lluis Sanchez <lluis@ximian.com>
19373
19374         * object.h: Added call_type field to MonoMethodMessage and the corresponding
19375         enumeration of values. Removed fields to store remote call output values in
19376         MonoAsyncResult. Not needed any more.
19377         * object.c: Initialize call_type and async_result fields in mono_message_init.
19378         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
19379         dispatching the message.
19380         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
19381         async call to finish. To do it use a message with EndInvoke call type.
19382
19383 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
19384
19385         * loader.h loader.c (mono_method_hash_marhal_info): New function which
19386         determines whenever a method has marshalling info.
19387
19388 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19389
19390         * assembly.c: fix the build on windows.
19391
19392 2003-08-22 Lluis Sanchez <lluis@ximian.com>
19393
19394         * object.cs: Fixed bug #47785.
19395
19396 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
19397
19398         * string-icalls.c (StringReplace): If their are no occurances of
19399         the old string found return a reference to the supplied
19400         string. This saves some memory and matches MS behavoir.
19401         
19402 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19403
19404         * socket-io.c: fixed compilation for systems that define AF_INET6
19405         and don't define SOL_IP/SOL_IPV6.
19406
19407 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
19408
19409         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
19410         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
19411
19412         * rawbuffer.c rawbuffer.h: Make this module thread safe.
19413
19414         * domain.c: Make this module thread safe.
19415
19416         * domain.c (mono_init): Call new initialization function.
19417
19418         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
19419         reference types too. Fixes #38812.
19420
19421         * image.c (mono_image_init): Fixed warnings.
19422
19423         * class.c (mono_class_from_typeref): Handle assembly load failure
19424         correctly.
19425
19426         * appdomain.c (add_assemblies_to_domain): Handle the case when
19427         the references of an assembly are not yet loaded.
19428
19429         * metadata.c image.c assembly.c: Moved initialization of global
19430         variables to a separate function called at startup since lazy 
19431         initialization of these variables is not thread safe.
19432         
19433         * image.c assembly.c: Made this module thread safe by adding locks in 
19434         the appropriate places.
19435
19436         * domain.c (mono_init): Call the new initialization functions of the
19437         three modules.
19438
19439 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
19440
19441         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
19442           make a direct call. It is proxy's work to make the call asynchronous.
19443           mono_delegate_end_invoke(): If the targe is a proxy, just collect
19444           the return values.
19445         * object.cs: mono_method_call_message_new(): read AsyncResult and
19446           state object from parameters list, if this info is requested.
19447         * object.h: Added fields to store remote call output values in
19448           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
19449
19450 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19451
19452         * object.h: add needed fields to MonoThread.
19453         * threads.c, threads.h: allow registering a function to cleanup data
19454         allocated per thread by the JIT.
19455
19456 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19457
19458         * loader.h: portability fix by Bernie Solomon
19459         * <bernard@ugsolutions.com>.
19460
19461 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
19464         return a MonoArray. This simplifies the code and also ensures that
19465         the cache allways contains an object reference as a value.
19466
19467         * icall.c (ves_icall_get_parameter_info): Simplified using the new
19468         function.
19469
19470 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19471
19472         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
19473         fixes a problem with byte ordering when getting the address family for
19474         a socket.
19475
19476 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
19477
19478         * .cvsignore: Added monosn.
19479
19480         * reflection.h reflection.c loader.c: Added support for parameter
19481         marshalling to dynamically created types. Fixes #47295.
19482
19483 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
19484
19485         * rand.c: remove useless warnings.
19486
19487 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19488
19489         * class.c: implemented ldtoken for methods and fieldrefs.
19490
19491 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19492
19493         * threadpool.c: when mono_async_invoke was called, no one took care of
19494         monitoring the queue. So if the method invoked took some time and we
19495         got new async invoke requests after 500 ms (the thread created waited
19496         that long in WaitForSingleObject), the new async invoke was not called
19497         until the previous one finished.
19498
19499         This is fixed now. Thanks to Totte for helping with it.
19500
19501 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19502
19503         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
19504
19505 2003-08-11  Martin Baulig  <martin@ximian.com>
19506
19507         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
19508
19509 2003-08-06  Martin Baulig  <martin@ximian.com>
19510
19511         * mono-debug-debugger.c: Added support for static fields,
19512         properties and methods.
19513
19514 2003-08-06  Martin Baulig  <martin@ximian.com>
19515
19516         * mono-debug-debugger.c: Don't store the MonoString's vtable to
19517         make this work for applications with multiple application domains.
19518
19519 2003-08-04  Martin Baulig  <martin@ximian.com>
19520
19521         * mono-debug-debugger.c: Completely reworked the type support; the
19522         most important thing is that we're now just using one single
19523         `MonoType' instance per type.
19524
19525 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
19526
19527         * mono-endian.h, mono-endian.c, icall.c: Added icall
19528         ves_icall_System_Double_AssertEndianity to assert double word endianity
19529         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
19530
19531 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19532
19533         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
19534         support, icalls and fixes.
19535
19536 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
19537
19538         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
19539         classes that are a punctuation character in .NET is not the same a
19540         g_unichar_ispunct.
19541
19542 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19543
19544         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
19545
19546 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
19547
19548         * icall.c: Add new MemCopy internalcall.
19549         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
19550         Simplified code; It is not necessary to handle all the cases here,
19551         as the C# code takes care of it.  Only handle the case of the name
19552         resource embedded into the assembly.
19553
19554         Changed signature to return the data pointer and the size of the
19555         data. 
19556
19557 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
19558
19559         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
19560         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
19561
19562 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
19563
19564         * socket-io.c: ignore EINTR error in select.
19565
19566 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
19567
19568         * class.h, class.c: removed unused subclasses field in MonoClass.
19569
19570 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
19571
19572         * icall.c: improve fix of get_base_definition(). If the parent class
19573           doesn't have the mehod, look at the parent of the parent.
19574         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
19575           to check if a parameter is an in or out parameter
19576           (PARAM_ATTRIBUTE_IN is not set by default).
19577           mono_method_return_message_restore(): Use mono_class_value_size to
19578           get the size of a value type. mono_type_stack_size (parameterType)
19579           does not return the correct value if parameterType is byRef.
19580           mono_load_remote_field(), mono_load_remote_field_new(),
19581           mono_store_remote_field(), mono_store_remote_field_new():
19582           raise exception if the remote call returns an exception.
19583
19584 2003-07-28  Martin Baulig  <martin@ximian.com>
19585
19586         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
19587         method.  This is a wrapper around mono_runtime_invoke() which
19588         boxes the instance object if neccessary.
19589
19590 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19591
19592         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
19593         metadata.h, row-indexes.h, verify.c: first cut of generics support.
19594
19595 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19596
19597         * icall.c: disable mcs bug workaround.
19598
19599 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
19600
19601         * object.c (mono_runtime_class_init): Take the metadata_section
19602         mutex before obtaining the domain mutex.
19603
19604         * appdomain.h: Added definition of metadata_section mutex here. 
19605
19606         * object.c: define metadata_mutex here.
19607
19608 2003-07-24  Ravi Pratap  <ravi@ximian.com>
19609
19610         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
19611         fixed.
19612
19613 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
19614
19615         * reflection.c: Fix bug #46669
19616
19617 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19618
19619         * exception.c:
19620         * exception.h:
19621         * icall.c:
19622         * object.h: fill in the type name for TypeLoadException.
19623
19624 2003-07-23  Ravi Pratap  <ravi@ximian.com>
19625
19626         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
19627         relationship between TypeBuilders while compiling corlib) and bug
19628         45993 (Array types returned from the runtime while compiling
19629         corlib were from the loaded corlib).
19630
19631 2003-07-22  Martin Baulig  <martin@ximian.com>
19632
19633         * mono-debug-debugger.c: Reworked the type support a bit more;
19634         distinguish between types and classes.
19635
19636 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
19637
19638         * icall.c: add IsArrayImpl icall.
19639
19640 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
19643         initializing real_size only once. Also fix bug #46602.
19644
19645 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
19646
19647         * object.c: Renamed mono_metadata_section to metadata_section.
19648
19649 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
19650
19651         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
19652           empty array if the type is an array. Fixed.
19653           ves_icall_MonoMethod_get_base_definition: if the base method
19654           is abstract, get the MethodInfo from the list of methods of
19655           the class.
19656         * reflection.c: ParameterInfo.PositionImpl should be zero-based
19657           and it was 1-based. Fixed in mono_param_get_objects.
19658
19659 2003-07-20  Martin Baulig  <martin@ximian.com>
19660
19661         * mono-debug.h: Set version number to 31.
19662         (mono_debug_init): Added `MonoDomain *' argument.
19663
19664         * mono-debug-debugger.c: Reworked the type support; explicitly
19665         tell the debugger about builtin types; pass the `klass' address to
19666         the debugger.
19667
19668 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
19669
19670         * image.c: Allow new metadata tables to be loaded without a
19671         warning. Also update the warning message to give the new constant value.
19672                 
19673 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19674
19675         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
19676         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
19677         array type representation changes.
19678
19679 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19680
19681         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
19682         on Environment.Exit () call.
19683
19684 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19685
19686         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
19687         requires a matching corlib.
19688
19689 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
19690
19691         * Changelog: My editor decided to add a CR to each line. Sorry about that.
19692           Committed again without the CRs.
19693         
19694 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
19695
19696         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
19697           getting it from the "this" socket instance. Did not work
19698           if the socket is a subclass of Socket.
19699           Also fixed bug #35371.
19700
19701 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19702
19703         * metadata.c: fixed size for TypedByRef.
19704         * loader.c: when searching for a method, consider the vararg amrker.
19705         * unicode.c, decimal.c: constify some arrays.
19706
19707 2003-07-15  Dick Porter  <dick@ximian.com>
19708
19709         * socket-io.c: Fixed compilation for gcc < 3.2.
19710
19711         Fixed compilation for machines that don't have AF_INET6 (thanks to
19712         Bernie Solomon <bernard@ugsolutions.com> for that part.)
19713
19714         Fixed compile warnings.
19715         
19716         Fixed formatting and line endings.
19717
19718 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
19719
19720         * socket-io.h:
19721         * socket-io.c: Added IPv6 support.
19722
19723 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
19724
19725         * class.c (mono_class_is_assignable_from): New function to implement
19726         the is_assignable_from logic. Used by mono_object_isinst, 
19727         Type::IsAssignableFrom () and the interpreter.
19728
19729         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
19730         Object, even interfaces.
19731         
19732         * object.c (mono_object_isinst): Implement in terms of 
19733         is_assignable_from.
19734
19735         * icall.c (ves_icall_type_is_assignable_from): New icall.
19736
19737 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
19738
19739         * domain.c (foreach_domain): fix compiler warning.
19740
19741 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
19742
19743         * image.c (load_metadata_ptrs): use g_strndup because strndup is
19744         not available on all plattforms
19745
19746 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * image.h image.c: Store the metadata version string in MonoImage.
19749         * icall.c: New icall to retrieve the image version.
19750         * reflection.c (create_dynamic_image): Fill in the image version field
19751         * reflection.c (build_compressed_metadata): Use the image version
19752         from the image structure.
19753
19754 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19755
19756         * appdomain.c: modified comment.
19757         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
19758         That will be its last iteration when mono_gc_cleanup is called from
19759         mono_runtime_cleanup and before the domain is unloaded.
19760
19761         Fixes bug #45962.
19762
19763 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
19764
19765         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
19766         attributes.
19767
19768 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19769
19770         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
19771         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
19772         Bernie Solomon <bernard@ugsolutions.com>.
19773
19774 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19775
19776         * object.c, object.h: provide mono_object_new_fast() for faster
19777         allocation in some special cases.
19778
19779 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19780
19781         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
19782         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
19783
19784 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19785
19786         * threadpool.c: fix leaks.
19787
19788 2003-07-01  Dick Porter  <dick@ximian.com>
19789
19790         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
19791         using MonoGHashTables.  Fixes threadpool bug posted to list.
19792
19793 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
19794
19795         * image.h, image.c: added support to load an assembly from a byte array.
19796         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
19797         assembly bundle support.
19798
19799 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
19800
19801         * threadpool.c (mono_thread_pool_add): keep a reference to the
19802         AsyncResult to prevent GC
19803
19804 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19805
19806         * class.c: leak fix.
19807
19808 2003-06-25  Dick Porter  <dick@ximian.com>
19809
19810         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
19811         for the async object, the WaitHandle object will close the handle.
19812         Fixes bug 45321.
19813
19814 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19815
19816         * class.c: in mono_array_class_get (), lookup from the hash with the
19817         same type we insert: this works around a bug in
19818         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
19819         lluis. The real fix will have to wait for after the release.
19820
19821 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19822
19823         * icall.c: fix memory leak when getting type members.
19824
19825 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
19826
19827         * reflection.c: added more pubtoken special cases.
19828
19829 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19830
19831         * class.c: handle field offset correctly when class size
19832         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
19833
19834 2003-06-20  Martin Baulig  <martin@ximian.com>
19835
19836         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
19837         *image' field.
19838
19839 2003-06-20  Martin Baulig  <martin@ximian.com>
19840
19841         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
19842
19843 2003-06-20  Martin Baulig  <martin@ximian.com>
19844
19845         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
19846         just distinguish between variables in registers and variables at
19847         an offset relative to a register.
19848
19849 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19850
19851         * icall.c: #ifdef out latest changes until mcs is fixed.
19852
19853 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19854
19855         * icall.c: return members in metadata order.
19856
19857 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19858
19859         * icall.c: avoid infinite loop in GetTimeZoneData.
19860
19861 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19862
19863         * icall.c: added Marshal.Prelink/All icalls.
19864
19865 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
19866
19867         * object.c, object.h: fix warnings and do some overflow checking
19868         when creating arrays.
19869
19870 2003-06-17  Dick Porter  <dick@ximian.com>
19871
19872         * file-io.h:
19873         * file-io.c: File attributes need to be tweaked slightly when
19874         passed from the managed to the w32 world.
19875
19876 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19877         * profiler.h profiler-private.h profiler.c: Rework last patch
19878         based on suggestion by Paolo.
19879         
19880 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19881
19882         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
19883         instruction level coverage data collection.
19884         * profiler.h profiler.c (: Added new callback function which can be
19885         used by the profiler to limit which functions should have coverage
19886         instrumentation.
19887         * profiler.c (mono_profiler_load): Call g_module_build_path to
19888         generate the file name of the profiler library.
19889
19890 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19891
19892         * profiler.c, profiler.h, profiler-private.h: added basic block 
19893         coverage profiling API.
19894
19895 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
19896
19897         * reflection.c (mono_reflection_create_runtime_class): Add support
19898         for events in dynamically generated code.
19899
19900         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
19901         not allocated.
19902
19903 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19904
19905         * icall.c: when getting timezone info, return reasonable values if we
19906         can't get the actual data.
19907
19908 2003-06-14  Dick Porter  <dick@ximian.com>
19909
19910         * threads.c (start_wrapper): Remove the reference to the thread
19911         object in the TLS data, so the thread object can be finalized.
19912         This won't be reached if the thread threw an uncaught exception,
19913         so those thread handles will stay referenced :-( (This is due to
19914         missing support for scanning thread-specific data in the Boehm GC
19915         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
19916
19917 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
19918
19919         * reflection.c: ensure streams and tables are first allocated with
19920         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
19921
19922 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19923
19924         * icall.c: fixed GetElementType for byrefs (bug# 44792).
19925
19926 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * reflection.c (mono_reflection_create_runtime_class): Add support for
19929         properties to dynamically created classes.
19930         * reflection.c: Fix a few places where non-MonoObjects were inserted
19931         into the tokens hashtable.
19932
19933 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19934
19935         * object.c: some support to handle out of memory exceptions.
19936
19937 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
19938
19939         * marshal.c (mono_marshal_get_native_wrapper): support reference
19940         return types
19941
19942 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19943
19944         * object.h, object.c: more portability stuff from Bernie Solomon.
19945         Unexport mono_object_allocate(). Added mono_object_unbox ().
19946         Set exitcode when an unhandled exception is thrown.
19947
19948 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
19949
19950         * marshal.c (mono_marshal_get_native_wrapper): use custom
19951         marshaler for return types.
19952
19953 2003-06-10  Dick Porter  <dick@ximian.com>
19954
19955         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
19956         ip_mreq is available
19957
19958 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19959
19960         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
19961         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
19962         by Bernie Solomon <bernard@ugsolutions.com>.
19963
19964 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
19965
19966         * gc.c (mono_gc_init): Avoid error message on shutdown when
19967         GC_DONT_GC=1 is used.
19968
19969         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
19970         New icall to return the GUID of a module.
19971
19972 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19973
19974         * class.c: ensure instance size always includes the parent's size
19975         even whem class size is set explicitly (fixes bug#44294).
19976
19977 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19978
19979         * profiler.h, profiler.c: made the simple profiler thread-safe,
19980         get more accurate timing info. Allow the loading of an
19981         externally-developed profiler module.
19982
19983 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
19984
19985         * marshal.c (mono_marshal_get_native_wrapper): improved
19986         class/byref arguments.
19987         (mono_marshal_get_native_wrapper): better string marshaling support.
19988
19989 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19990
19991         * class.c: ensure .pack and .size are handled correctly and
19992         simplified layout of static fields.
19993
19994 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19995
19996         * appdomain.c
19997         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
19998
19999         * loader.c (mono_lookup_pinvoke_call): look for modules in the
20000         current directory (fix bug 44008)
20001
20002 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
20003
20004         * marshal.c (mono_marshal_get_native_wrapper): started support for
20005         custom marshalers.
20006         (mono_delegate_to_ftnptr): consider marshalling specifications
20007
20008 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20009
20010         * reflection.c, reflection.h: emit custom marshal info.
20011
20012 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20013
20014         * object.c: free the GError.
20015         * icall.c: added CloseEvent_internal.
20016         * threads.[ch]:
20017         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
20018         call.
20019
20020 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * loader.c (mono_method_get_signature): Add support for dynamic
20023         assemblies.
20024
20025 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
20026
20027         * reflection.c: fixed bug #43905.
20028
20029 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
20030
20031         * class.c, domain.c, icall.c, metadata.h, object.h: support for
20032         handling TypedReference and ArgIterator.
20033         * loader.c, loader.h: added function to get signature at call site.
20034
20035 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20036
20037         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
20038         data readonly. Buglets and warning fixes. Some MethodSpec support.
20039
20040 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
20041
20042         * class.h, class.c, object.c: remove relative numbering support.
20043
20044 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
20045
20046         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
20047         free the string, until we get a chance to fix Gtk#
20048
20049 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20050
20051         * marshal.c: revert last patch.
20052
20053 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
20054
20055         * icall.c: updates for new mono_class_vtable() not calling
20056         the type constructor anymore.
20057
20058 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20059
20060         * object.h, object.c: separate vtable creation from type
20061         initialization. Make running the .cctor thread safe.
20062
20063 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
20064
20065         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
20066
20067 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
20068
20069         * loader.c (mono_get_method): consider calling convention
20070
20071 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
20074         to return the invisible global type for a module.
20075
20076         * reflection.c (mono_image_build_metadata): Emit global fields too.
20077
20078 2003-05-20  Peter Williams  <peterw@ximian.com>
20079
20080         * loader.c (mono_lookup_internal_call): Add a few newlines.
20081
20082 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
20085         literal strings.
20086
20087         * appdomain.c (set_domain_search_path): Recalculate search path when
20088         AppDomainSetup.PrivateBinPath changes.
20089
20090         * object.c (mono_class_compute_gc_descriptor): It turns out some
20091         parts of the class libs (like System.Thread) holds pointers to
20092         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
20093         to treat native int a pointer type here.
20094         
20095 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
20096
20097         * appdomain.h, domain.c: add hashtable for jump target resolution.
20098
20099 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
20100
20101         * reflection.h reflection.c icall.c: Added new icalls 
20102         GetManifestResourceInfoInternal, GetModulesInternal and support
20103         infrastructure.
20104
20105 2003-05-16  Dick Porter  <dick@ximian.com>
20106
20107         * icall.c:
20108         * file-io.h:
20109         * file-io.c: Implement System.IO.MonoIO::GetTempPath
20110
20111 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
20112
20113         * object.c: mono_store_remote_field: little fix to previous patch.
20114
20115 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
20116
20117         * class.c: add constructors to array classes.
20118         * icall.c: special case array construction for InternalInvoke (),
20119
20120 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * class.h class.c reflection.c object.c: Added support for field
20123         defaults in dynamically generated classes.
20124
20125 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
20126
20127         * reflection.c: properly encode charset for ddlimport.
20128
20129 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
20130
20131         * threads.c: allow compiling without GC.
20132
20133 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
20134
20135         * appdomain.h, object.c, object.h, threads.c, threads.h: added
20136         handling of thread static data.
20137
20138 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
20139
20140         * reflection.h, reflection.c: added mono_custom_attrs_free ().
20141
20142 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
20143
20144         * class.c (mono_array_class_get): always set the serializable flags
20145         (mono_array_class_get): always set the SEALED attribute for array types
20146
20147 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
20148
20149         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
20150         attributes (fix for bug 42021).
20151
20152 2003-05-12  Dick Porter  <dick@ximian.com>
20153
20154         * gc.c: Don't run finalizers when the finalizer thread is
20155         finishing up, because the default domain has already been
20156         destroyed.
20157
20158 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
20159
20160         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
20161         value is null, we should throw an exception.   This is slightly
20162         different than the other conventions used for the constructor.
20163
20164 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20165
20166         * socket-io.c: fixed windows build.
20167
20168 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20169
20170         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
20171
20172 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
20173
20174         * object.c (mono_string_new_wrapper): Compatibility fix for MS
20175         compilers.
20176
20177 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
20178
20179         * class.c (mono_class_layout_fields): Add experimental GC aware
20180         auto layout facility. Requires class library changes to work correctly.
20181
20182         (mono_class_setup_vtable): Avoid overriding explicit interface
20183         method implementations. Fixes iface3.exe test.
20184
20185         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
20186         object reference.
20187         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
20188         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
20189
20190         * metadata.h: Add new type classification macro which determines
20191         whenever the type holds an object reference.
20192
20193 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
20194
20195         * marshal.c (mono_marshal_get_native_wrapper): cleanups
20196
20197 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
20198
20199         * gc.c (finalizer_thread): Work around a GC bug.
20200
20201 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
20202
20203         * marshal.c (emit_struct_conv): allow unions
20204
20205         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
20206
20207 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
20208
20209         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
20210
20211 2003-05-06  Martin Baulig  <martin@ximian.com>
20212
20213         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
20214
20215 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20216
20217         * socket-io.c:
20218         (Select_internal): allow NULLs, don't create arrays if not needed.
20219         Coupled with Socket.cs changes.
20220
20221         * threadpool.c:
20222         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
20223         register a finalizer for it that will close the semaphore handle. This
20224         fixes the leak and make Lupus' test run with > 4080 loops.
20225
20226 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
20227
20228         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
20229         Jerome Laban (bug #42287)
20230
20231 2003-05-02  Martin Baulig  <martin@ximian.com>
20232
20233         * debug-mono-symfile.h
20234         (MonoSymbolFile): Moved declaration into mono-debug.h.
20235         (MonoDebugMethodJitInfo): Likewise.
20236         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
20237         argument.
20238         (_mono_debug_address_from_il_offset): Take a
20239         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
20240
20241         * mono-debug.h
20242         (MonoDebugDomainData): New struct.
20243         (mono_debug_get_domain_data): New function.
20244         (mono_debug_add_method): Take an additional `MonoDomain *'
20245         argument.
20246         (mono_debug_source_location_from_address): Likewise.
20247         (mono_debug_il_offset_from_address): Likewise.
20248         (mono_debug_address_from_il_offset): Likewise.
20249
20250 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
20251
20252         * reflection.c: one more check for null type in custom attrs.
20253
20254 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20255
20256         * reflection.c: avoid warning (comparison is always false due to limited
20257         range of data type).
20258
20259 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20260
20261         * icall.c: throw an exception in Type.GetField if the argument 'name'
20262         is NULL.
20263
20264 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
20265
20266         * reflection.c: fixed handling of enums in named arguments to custom
20267         attributes (bug #42123).
20268
20269 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
20270
20271         * reflection.c: use the right array element type and handle
20272         a null for a Type argument, too.
20273
20274 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
20275
20276         * reflection.c: handle arrays as arguments to custom attributes.
20277
20278 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
20279
20280         * reflection.c: handle a string value in a custom attr
20281         ctor that takes an object.
20282
20283 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
20284
20285         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
20286         (fix bug #42063)
20287
20288 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
20291
20292 2003-04-27  Martin Baulig  <martin@ximian.com>
20293
20294         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
20295         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
20296         MONO_DEBUGGER_EVENT_BREAKPOINT.
20297         (mono_breakpoint_trampoline_code): Removed.
20298         (mono_debugger_event_handler): The last argument is now a
20299         `guint32'.
20300         (mono_debugger_insert_breakpoint_full): Removed the
20301         `use_trampoline' argument.
20302         (mono_debugger_method_has_breakpoint): Likewise.
20303         (mono_debugger_trampoline_breakpoint_callback): Renamed to
20304         mono_debugger_breakpoint_callback(); take the method and
20305         breakpoint number as arguments.
20306
20307 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
20308
20309         * metadata.c: fix off by one when loading parameters attributes.
20310
20311 2003-04-24  Martin Baulig  <martin@ximian.com>
20312
20313         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
20314
20315 2003-04-24  Martin Baulig  <martin@ximian.com>
20316
20317         * mono-debug-debugger.c: Moved all code which interacts with the
20318         Mono Debugger here.
20319
20320         * debug-mono-symfile.c: This code now just deals with the symbol
20321         file itself, the debugger code is now in mono-debug-debugger.c.
20322
20323 2003-04-23  Martin Baulig  <martin@ximian.com>
20324
20325         * mono-debug.c (mono_debug_source_location_from_il_offset):
20326         New method; like mono_debug_source_location_from_address(), but
20327         takes an IL offset instead of a machine address.
20328
20329 2003-04-23  Martin Baulig  <martin@ximian.com>
20330
20331         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
20332         `line' field; this is now computed by the debugger.
20333
20334 2003-04-23  Martin Baulig  <martin@ximian.com>
20335
20336         * mono-debug.[ch]: New files.  This is the new debugging interface.
20337
20338         * mono-debug-debugger.[ch]: New files.  Moved all code which
20339         interacts with the Mono Debugger here.
20340
20341 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
20342
20343         * domain.c (mono_init): initialize mono_defaults.monitor_class
20344
20345 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
20346
20347         * reflection.c (method_encode_code): Add a spicy exception to help
20348         future compiler authors.
20349
20350 2003-04-21  Martin Baulig  <martin@ximian.com>
20351
20352         * icall.c
20353         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
20354         Make this work with relative pathnames; g_filename_to_uri() needs
20355         an absolute filename.
20356
20357 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * icall.c: Track name changes in Object and ValueType.
20360
20361 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
20362
20363         * metadata.c (mono_type_stack_size): size should be a multiple of
20364         sizeof (gpointer)
20365
20366 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20367
20368         * gc.c:
20369         (internal_domain_finalize): moved into mono_domain_finalize. No need
20370         to create another thread because the finalizers will be run in the
20371         finalizer thread.
20372         
20373         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
20374         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
20375         to be run (MS does this too).
20376
20377 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * object.c (mono_class_compute_gc_descriptor): Update comment.
20380
20381         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
20382
20383         * image.h: Add synchronized wrapper cache.
20384
20385         * image.c (do_mono_image_open): Initialize cache.
20386
20387         * reflection.c (create_dynamic_mono_image): Initialize cache.
20388
20389 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20390
20391         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
20392         ves_icall_System_Buffer_ByteLengthInternal.
20393
20394 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
20395
20396         * reflection.c: setup klass->nested_in earlier. Allow
20397         a dash in the assembly name.
20398
20399 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
20400
20401         * metadata.c (mono_type_to_unmanaged): dont access
20402         type->data.klass for MONO_TYPE_OBJECT
20403         (mono_type_to_unmanaged): consider System.Delegate class
20404
20405 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
20406
20407         * class.c: just setup supertypes in the proper place instead of
20408         initializing the full element class for arrays.
20409
20410 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
20411
20412         * class.c: ensure the element class of arrays is initialized.
20413         Setup the supertype info for array classes, too.
20414
20415 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
20416
20417         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
20418
20419 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20420
20421         * Makefile.am: re-added -m option when running cygpath. This way,
20422         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
20423         separator.
20424         * mono-config.c: same codepath for locating mono config file for WIN32
20425         and the rest.
20426         * assembly.c: if mono_assembly_setrootdir is called, don't override
20427         the value set.
20428
20429 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20430
20431         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
20432         MONO_ASSEMBLIES variable.
20433
20434 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
20435
20436         * icall.c: added Assembly::GetNamespaces() icall.
20437
20438 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20439
20440         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
20441
20442 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
20443
20444         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
20445         * object.c: fixed bug in the construction of vtable for proxies
20446
20447 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
20448
20449         * object.c (mono_array_new): Mark mono_array_new as an icall.
20450
20451 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20452
20453         * class.c: fixed test for public method when overriding interfaces.
20454         Closes bug #40970.
20455
20456 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
20457
20458         * appdomain.h, domain.c: added mono_domain_foreach() to
20459         be able to access the currently loaded appdomains.
20460         * object.c: make string interning work across sppdomains.
20461         Mark some functions for use as icalls.
20462
20463 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
20464
20465         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
20466
20467         * reflection.h reflection.c: Allocate long living data using 
20468         GC_MALLOC_ATOMIC so the collector does not need to scan it.
20469
20470         * reflection.c: Double the allocation size in streams instead of
20471         increasing it, to prevent unneccesary copying on large assemblies.
20472         
20473         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
20474         creation if the assembly does not have the Run flag set.
20475
20476 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
20477
20478         * class.h: avoid the C++ keywords in header files (Jerome Laban
20479         spotted and fixed this).
20480
20481 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20482
20483         * object.c:
20484         (mono_unhandled_exception): fill in the arguments for the
20485         UnhandledException event. Only trigger that event for the default
20486         domain (as MS does).
20487
20488 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
20489
20490         * object.c: Improve typed allocation stuff based on suggestions from
20491         Paolo. Also turn it on if the GC library supports it.
20492
20493 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
20494
20495         * object.c object.h class.h: Added experimental typed allocation
20496         facility using the interfaces in gc_gcj.h.
20497
20498         * os/gc_wrapper.h: Added new include files.
20499         
20500 2003-04-03  Martin Baulig  <martin@ximian.com>
20501
20502         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
20503         which is not yet enabled by default.
20504
20505         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
20506         functions.
20507         (mono_gc_lock, mono_gc_unlock): New static functions.
20508
20509         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
20510         functions; stop/start the world for the garbage collector.  This
20511         is using the windows API; we need to complete the SuspendThread()/
20512         ResumeThread() implementation in the io-layer to make this work on Unix.
20513         (mono_gc_push_all_stacks): New public function; tells the garbage
20514         collector about the stack pointers from all managed threads.
20515
20516 2003-04-03  Martin Baulig  <martin@ximian.com>
20517
20518         * object.h (MonoThread): Added `gpointer stack_ptr'.
20519
20520         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
20521
20522 2003-04-03  Martin Baulig  <martin@ximian.com>
20523
20524         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
20525
20526 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * reflection.c (typebuilder_setup_fields): Initialize field.first and
20529         field.last.
20530
20531 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
20532
20533         * loader.c (mono_lookup_internal_call): Report the corlib that is
20534         out of sync.
20535
20536 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
20537
20538         * icall.c (ves_icall_type_GetTypeCode): fixed check for
20539         System.DBNull (it's class not valuetype).
20540
20541 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
20542
20543         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
20544         if the array method was already assigned a token (fixes bug#40646).
20545
20546 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * reflection.c (mono_reflection_get_type): Attempt type resolve even
20549         if no assembly is given.
20550
20551 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
20552
20553         * metadata.h: Added the new tables.
20554
20555         * row-indexes.h: Added definitions for new tables.
20556
20557         * metadata.c: Add schemas for new tables, and add support for
20558         computing the sizes of them.
20559
20560         * class.c: Update for handling the new type cases.
20561
20562 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
20563
20564         * metadata.h (MONO_TYPE_IS_VOID): new macro
20565
20566 2003-03-31  Martin Baulig  <martin@ximian.com>
20567
20568         * threads.h (MonoThreadCallbacks): Added `thread_created'.
20569
20570         * threads.c (mono_thread_new_init): Call `thread_created' in the
20571         mono_thread_callbacks.
20572
20573 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
20574
20575         * loader.h: added marshalbyrefobject_class to mono_defaults
20576         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
20577         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
20578           generation of output parameters.
20579           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
20580         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
20581           contextbound and the target object belongs to the context of the caller.
20582         * object.h: added context and unwrapped_server variables in MonoRealProxy.
20583         * object.c: Implemented support for interfaces and abstract classes
20584           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
20585           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
20586
20587 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
20588
20589         * class.h class.c (mono_class_is_subclass_of): New function.
20590         
20591         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
20592         routines for most common case (calls from ArrayList::ToArray).
20593
20594         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
20595         routine so programs which call Environment::Exit() can be profiled.
20596
20597         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
20598         Added MONO_ARCH_SAVE_REGS.
20599
20600         * icall.c (ves_icall_type_is_subtype_of): Use new function.
20601
20602 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
20603
20604         * blob.h: Add a couple of new MonoType types definitions.
20605
20606         * tabledefs.h: Add a couple of new call convs.
20607
20608 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
20609
20610         * reflection.h (MonoReflectionDynamicAssembly): track changes in
20611         the layout of the class.
20612
20613         * reflection.c (alloc_table): double the size on overflow to avoid
20614         unnecessary copying.
20615
20616         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
20617         avoid filling out metadata tables and blobs. Also set mb->ilgen to
20618         null so it can be garbage collected.
20619         
20620 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
20621
20622         * reflection.c (mono_reflection_get_type): Return the resolved type
20623         only if it is in the assembly we searched.
20624
20625         * reflection.c (ensure_runtime_vtable): Initialize method slots.
20626
20627         * class.c (mono_class_setup_vtable): Set the slot of the overriding
20628         method.
20629
20630 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20631
20632         * appdomain.c:
20633         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
20634         the right one is 'file:///blah', but MS allows it.
20635         * assembly.c:
20636         (mono_assembly_open): allow 'file://blah'
20637
20638         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
20639
20640 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
20641
20642         * socket-io.c: fixes bug #40310.
20643
20644 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * reflection.c (mono_reflection_parse_type): handle deeply nested
20647         types correctly.
20648
20649         * reflection.c (mono_image_create_token): Use unique token values
20650         since they will be put into a hash table.
20651
20652         * class.c (mono_class_setup_vtable): If a method occurs in more than
20653         one place in the vtable, and it gets overriden, then change the
20654         other occurances too.
20655
20656         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20657         object as return type.
20658
20659 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20660
20661         * icall.c: Deleted "ToString" implementation for double and float
20662         because they are full implemented in managed code.
20663
20664 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20665
20666         * reflection.c, reflection.h: implemented and exported functions
20667         to retrieve info about custom attributes.
20668
20669 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20670
20671         * appdomain.c: moved Uri handling to assembly.c
20672         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
20673         work when using a file Uri in *nix and windows.
20674
20675         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
20676         GetReferencedAssemblies.
20677
20678 2003-03-18  Dick Porter  <dick@ximian.com>
20679
20680         * icall.c: Rename a couple of internal calls
20681
20682         * threads.c: Set the thread state to Stopped when a thread exits.
20683         Fixes bug 39377.
20684
20685 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
20686
20687         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
20688         New icall.
20689
20690         * object.c (mono_class_vtable): fix warning.
20691
20692 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
20693
20694         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
20695
20696         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
20697         memory.
20698         (method_encode_clauses): Create exception info structures in the right
20699         order.
20700         (mono_reflection_setup_internal_class): Initialize supertypes field.
20701
20702         * class.c object.c: Handle interfaces which implement other interfaces 
20703         correctly.
20704
20705         * class.h class.c: Move the supertypes array initialization code into 
20706         a separate function so it can be used for dynamic types too. Also call
20707         it earlier, in mono_class_init(), since it can be used before the
20708         type is initialized.
20709
20710 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20711
20712         * Makefile.am:
20713         * assembly.c:
20714         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
20715
20716         * appdomain.c:
20717         * appdomain.h:
20718         * marshal.c:
20719         * object.c: remove warnings.
20720
20721 2003-03-13  Martin Baulig  <martin@ximian.com>
20722
20723         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
20724         (MonoDebugLexicalBlockEntry): New types.
20725
20726         * debug-mono-symfile.c
20727         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
20728
20729 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20730
20731         * process.c: ret can be any non-zero value accroding to MS doc.
20732
20733 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
20734
20735         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
20736         fixing a warning for a miss-used prototype, would have cause
20737         random memory corruption.
20738
20739 2003-03-07  Martin Baulig  <martin@ximian.com>
20740
20741         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
20742         getting really annoying ....
20743
20744 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
20745
20746         * reflection.c (fixup_method): added support for array methods.
20747
20748 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20749
20750         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
20751         (pointed out by Michael Adams).
20752
20753 2003-03-04  Dick Porter  <dick@ximian.com>
20754
20755         * icall.c: Temporarily reverted the Double and Single ToString()
20756         change, because it broke nunit.
20757
20758 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
20759
20760         * object.h, threads.h: make include files compatible with C++
20761         (patch by Jerome Laban <jlaban@wanadoo.fr>).
20762
20763 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20764
20765         * icall.c: Erased ToString helper functions for Double and Single.
20766         Now, that implementations ar all in managed code (Double and Single
20767         Formatters).
20768
20769 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
20770
20771         * appdomain.c: Added method for initializing the default context of
20772         a domain. Added internal call for getting the default context.
20773         * appdomain.h: Added context variable in MonoDomain struct.
20774         * domain.c: mono_domain_set also sets the default context of the domain
20775         * icall.c: Mapped internal method InternalGetDefaultContext.
20776         * object.c: mono_object_get_virtual_method returns always a remoting
20777         wrapper if the object is a transparent proxy.
20778         mono_runtime_invoke_array: when creating an object by calling the
20779         constructor, if the created object is a proxy, then the constructor should
20780         be called using the a remoting wrapper.
20781
20782 2003-03-03  Dick Porter  <dick@ximian.com>
20783
20784         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
20785         variable so it compiles on solaris.  Problem spotted by
20786         Christopher Taylor <ct@cs.clemson.edu>
20787
20788 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20789
20790         * appdomain.c:
20791         (get_info_from_assembly_name): don't leak value.
20792
20793         * icall.c:
20794         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
20795         result.
20796
20797 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20798
20799         * assembly.c: export mono_image_load_references ().
20800         * class.c: handle function pointers. mono_class_from_name() now
20801         supports nested type names directly.
20802
20803 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
20804
20805         * reflection.h reflection.c: Encode already created dynamic methods 
20806         and fields correctly as a DEF instead of a REF.
20807
20808         * reflection.c: Get rid of the force_ref argument to 
20809         mono_image_typedef_or_ref since it was wrong in the first place.
20810
20811         * string-icalls.c: add error checking to string constructors according
20812         to the MSDN docs.
20813
20814         * reflection.c: Emit types in the order their TypeBuilders were 
20815         created. Previously, a new table index was assigned to each type before
20816         the tables were emitted. This was wrong because the signature blob
20817         might already refer to a type by its original table index.
20818
20819 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
20820
20821         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
20822         change.
20823         
20824 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20825
20826         * Makefile.am: make assemblies dir have \ instead of / on windows.
20827
20828 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
20829
20830         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
20831         iterate over the NESTEDCLASS table using a linear search since the
20832         table is not guaranteed to be sorted by the secondary key.
20833
20834         * class.c (mono_class_create_from_typedef): fixed up call to
20835         mono_metadata_nesting_typedef.
20836         
20837 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
20838
20839         * marshal.c (mono_string_to_byvalstr): clear the memory as
20840         suggested by Jerome Laban <jlaban@wanadoo.fr>
20841
20842 2003-02-26  Dick Porter  <dick@ximian.com>
20843
20844         * process.c: Cope with padding in .rsrc blocks
20845
20846 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
20847
20848         * metadata.h: reverted the filter_len change, it breaks reflection
20849         
20850 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
20851
20852         * metadata.h: added a new field to store the filter_len
20853         
20854
20855 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20856
20857         * reflection.c: handle custom attributes for types and members
20858         created with Reflection.Emit (bug#38422).
20859
20860 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
20861
20862         * reflection.c: define RTSpecialName automatically for constructors for
20863         compatibility with MS.NET.
20864
20865         * reflection.c (mono_reflection_create_runtime_class): initialize
20866         nested_in field of dynamically created classes.
20867
20868 2003-02-22  Martin Baulig  <martin@ximian.com>
20869
20870         * debug-mono-symfile.h: Incremented version number.
20871
20872 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
20873
20874         * object.h icall.c process.c: fix warnings.
20875
20876 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
20877
20878         * appdomain.h appdomain.c:
20879         (mono_domain_try_type_resolve): split the 
20880         name_or_tb argument into a name and a tb argument.
20881         (mono_domain_has_type_resolve): new function to check whenever the
20882         application has registered a TypeResolve event handler.
20883         
20884         * icall.c reflection.h reflection.c: move the type resolve logic into
20885         mono_reflection_get_type () so it will be invoked when 
20886         Assembly::GetType () is called.
20887
20888         * reflection.c:
20889         (mono_reflection_get_type): renamed to get_type_internal.
20890         (mono_reflection_get_type): fixed type name generation so it works 
20891         for nested types too.
20892         (mono_reflection_get_type): call has_type_resolve () to avoid the 
20893         costly type name generation if there is no resolve event handler.
20894
20895 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20896
20897         * class.c, image.c: load exported types from file references.
20898
20899 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
20900
20901         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
20902           used to cache the managed methods used to create proxies and make 
20903           remote invocation of methods.
20904         * class.h: Added in MonoVTable a flag to indicate that a class needs 
20905           to be remotely created.
20906         * object.c: Modified the method mono_class_vtable(). It now initializes 
20907           the remote flag of the vtable. Modified mono_object_new_specific(), 
20908           so now it checks the remote flag.
20909         * icall.c: Added a couple of internal methods, one for enabling instance 
20910           creation interception for a type, and one for creating objects bypassing
20911           the remote check.
20912
20913 2003-02-18  Martin Baulig  <martin@ximian.com>
20914
20915         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
20916         New interncall to get a method's metadata token.
20917
20918         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
20919         New interncall for the debugger.
20920
20921 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
20922
20923         * class.c (mono_class_setup_vtable): allocate supertype array
20924
20925 2003-02-18  Martin Baulig  <martin@ximian.com>
20926
20927         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
20928
20929 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20930
20931         * reflection.c:
20932         (assembly_name_to_aname): jump over unknown properties (i've found
20933         something like: 'type, assembly, version=xxx, custom=null, public...',
20934         so now will ignore custom=null and still get the rest of the values).
20935
20936 2003-02-17  Dick Porter  <dick@ximian.com>
20937
20938         * threads.c: Have Thread.Start() wait for a semaphore to signal
20939         that the thread has set up all its local data.  This fixes bug
20940         34323, where Abort() raced the new thread's TLS data.
20941
20942         Also removes the handle_store() call from start_wrapper, because
20943         threads are now always created suspended and there is no longer a
20944         race between the parent and child threads to store the info.
20945
20946 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
20947
20948         * image.c: explain the #- heap issue in a message, hopefully
20949         avoiding FAQs on mono-list.
20950
20951 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20952
20953         * icall.c:
20954         (GetEntryAssembly): if the domain has not invoked
20955         AppDomain.ExecuteAssembly yet, return the assembly of the default
20956         AppDomain.
20957
20958 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
20959
20960         * class.c (mono_ldtoken): make it work in dynamic assemblies.
20961
20962 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20963
20964         * metadata.c, reflection.c: simple speedup to type hash
20965         and equals code.
20966
20967 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
20968
20969         * image.c, image.h, class.c, assembly.c: move module loading
20970         to MonoImage. When loading metadata, consider alignemnet from
20971         the start of metadata, not from the metadata address in memory.
20972
20973 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
20974
20975         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
20976         AssemblyBuilder objects. Factored out custom attribute creation into
20977         a separate function.
20978         (create_custom_attr): new function to create custom attributes.
20979
20980 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
20981
20982         * Makefile.am: Got tired of typing the full pathname to pedump.
20983         Until there is another option, am installing this.
20984
20985 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
20986
20987         * class.c (class_compute_field_layout): always set field->parent 
20988         (mono_ldtoken): use mono_defaults.fieldhandle_class;
20989
20990 2003-02-11  Dick Porter  <dick@ximian.com>
20991
20992         * threads-types.h:
20993         * monitor.c: Rewrote Monitor, making lock much faster and
20994         Pulse/Wait work as specified.  Also uses much fewer handles, and only
20995         creates them as needed.
20996
20997         * exception.c: Added SynchronizationLockException
20998
20999         * threads.c: Deleted old Monitor implementation.  The new one is
21000         in a new file.
21001
21002 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21003
21004         * class.c: handled TypedReference type code. Set the correct size for
21005         class data. Setup interface_offsets for interface classes, too.
21006
21007 2003-02-09  Martin Baulig  <martin@ximian.com>
21008
21009         * debug-mono-symfile.h: Reflect latest symbol writer changes.
21010
21011 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
21012
21013         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
21014         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
21015         * object.c: fixed mono_object_get_virtual_method () for interfaces.
21016         * verify.c: check for code that runs after the end of the method.
21017
21018 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
21019
21020         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
21021         "System.Math::Round2".
21022         * sysmath.h: Added Floor, Round and Round2 definitions.
21023         * sysmath.c: Modified certain functions that were not 100% compliant
21024         with MS.NET (math precision) and added the implementation of Floor,
21025         Round and Round2.
21026
21027 2003-02-07  Martin Baulig  <martin@ximian.com>
21028
21029         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
21030
21031 2003-02-07  Martin Baulig  <martin@ximian.com>
21032
21033         * debug-mono-symfile.c: Reflected latest symwriter changes.
21034         (mono_debug_create_mono_symbol_file): Removed.
21035         (mono_debug_open_mono_symbol_file): Take an argument which
21036         specifies whether to create a dynamic symbol file.
21037
21038 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
21039
21040         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
21041
21042 2003-02-05  Martin Baulig  <martin@ximian.com>
21043
21044         * reflection.c (mono_image_build_metadata): Make this public,
21045         protect it against being called multiple times, don't create
21046         resources and don't build the compressed metadata here.
21047         (mono_image_create_pefile): Do this here.
21048
21049         * icall.c
21050         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
21051
21052 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21053
21054         * socket-io.c: fixed bug #36322.
21055
21056 2003-02-06  Piers Haken <piersh@friskit.com>
21057
21058         * appdomain.[ch]:
21059         * class.h:
21060         * debug-mono-symfile.c:
21061         * icall.c:
21062         * loader.c:
21063         * mono-config.c:
21064         * monosn.c:
21065         * reflection.c:
21066         * socket-io.c: warning cleanups
21067
21068 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
21069
21070         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
21071         function. works like remoting invoke, but does a check for the Proxy first.
21072
21073 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
21074
21075         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
21076
21077 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
21078
21079         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
21080         array of pointers.
21081         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
21082         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
21083
21084         * object.c (mono_store_remote_field_new): used by the new jit
21085         instead of mono_store_remote_field
21086         (mono_load_remote_field_new): used by the new jit
21087         instead of mono_load_remote_field
21088
21089 2003-02-05  Patrik Torstensson
21090
21091         * appdomain.c: changed unload to take the domain id instead
21092         of domain
21093         
21094         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
21095
21096
21097 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21098
21099         * appdomain.c: don't look for assemblies in ApplicationBase if
21100         PrivateBinPathProbe is set.
21101
21102 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21103
21104         * object.c: make the first argument in main_args contain the absolute
21105         path to the assembly. Fixes bug #37511.
21106
21107 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21108
21109         * icall.c: get correct UTC offset for countries not using daylight
21110         time saving. Fixes bug #30030.
21111
21112 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21113
21114         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
21115         and 1 are the family).
21116
21117 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
21118
21119         * icall.c (ves_icall_InternalExecute): removed wrong assertion
21120
21121         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
21122
21123 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
21124
21125         * reflection.c: added support for SignatureHelper tokens, which is
21126         needed by the Calli opcode.
21127
21128         * reflection.h: track changes to SignatureHelper class.
21129
21130         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
21131
21132 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21133
21134         * appdomain.c: fixed loading assemblies from PrivateBinPath.
21135
21136 2003-02-03  Patrik Torstensson
21137         * appdomain.[c|h], domain.c : 
21138          - Added support for getting a domain via domain id
21139          - Support for setting and getting domain from System.AppDomain 
21140            (used in cross appdomain channel)
21141          - Added support for get/set for a MonoAppContext on a thread 
21142            (Context class in System.Runtime.Remoting.Contexts),
21143          - Removed hack in Get/SetData and ExecuteAssembly.
21144         
21145         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
21146         the managed world to get control when a proxy is created.
21147
21148         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
21149         
21150 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
21151
21152         * icall.c
21153         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21154         Populate the codebase field as well.
21155
21156 2003-02-02  Martin Baulig  <martin@ximian.com>
21157
21158         * debug-mono-symfile.c
21159         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
21160         (mono_debug_symfile_add_method): Allow interncalls.
21161
21162 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21163
21164         * icall.c: throw parse exception if strtod fails or the string is empty.
21165
21166 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
21167
21168         * marshal.c: handle object type separately from defined
21169         class types.
21170
21171 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
21172
21173         * marshal.c: handle NATIVE_LPSTR for strings when it's
21174         explicitly specified.
21175
21176 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
21177
21178         * reflection.c, reflection.h, icall.c: setup the reflection
21179         handle cache for ModuleBuilders and AssemblyBuilders.
21180
21181 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
21182
21183         * reflection.c (reflection_methodbuilder_to_mono_method): set
21184         pinvoke flag
21185
21186 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21187
21188         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
21189
21190 2003-01-29  Dick Porter  <dick@ximian.com>
21191
21192         * threads.c: No need for the fake_thread kludge now that Thread
21193         doesn't run a class constructor
21194         
21195 2003-01-29  Dick Porter  <dick@ximian.com>
21196
21197         * threads.c: Use g_direct_hash instead of the rather bogus
21198         g_int_hash
21199
21200 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
21201
21202         * marshal.c (mono_marshal_get_native_wrapper): add check for null
21203         (fix pinvoke12.exe)
21204         (mono_marshal_get_struct_to_ptr): generate valid IL code
21205         (mono_marshal_get_ptr_to_struct): generate valid IL code
21206         (*): correctly set sig->pinvoke, we need to memdup the signature
21207         to do that
21208
21209 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21210
21211         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
21212         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
21213
21214 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
21215
21216         * profiler.c: provide more callers information.
21217
21218 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
21219
21220         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
21221
21222         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
21223
21224         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
21225
21226 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
21229         exception instead of going into an infinite loop on dates which it 
21230         can't yet handle.
21231
21232         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
21233         out-of-range exception if needed.
21234
21235         * class.c (mono_class_setup_vtable): allow a virtual method to provide
21236         an implementation for an interface method and to override an inherited
21237         method at the same time. 
21238         Imagine a scenario when a virtual method is used to override a
21239         virtual abstract method in a parent class, and this same method 
21240         provides an implementation for an method inherited from an interface. 
21241         In this case, the interface resolution code will set im->slot, which 
21242         means that the virtual method override pass will skip this method 
21243         which means a pointer to the abstract method inherited from the parent
21244         will remain in the vtable of this non-abstract class.
21245
21246         * class.c: (mono_class_setup_vtable): continue search for a real 
21247         method if only an abstract method is found.     
21248
21249 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
21250
21251         * reflection.c: add size to encoding for ByValStr and ByValArray
21252         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
21253
21254 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21255
21256         * class.c (mono_class_setup_vtable): pass the override info as an
21257         argument.
21258
21259         * class.c (mono_class_setup_vtable): set the slot of overriding methods
21260         correctly.
21261         
21262         * reflection.c (ensure_runtime_vtable); add support for method 
21263         overrides.
21264         
21265 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21266
21267         * reflection.c (resolution_scope_from_image): Hack to work to work with
21268         dynamic assemblies.
21269
21270         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
21271         added a 'force_ref' argument to force this function to allways return 
21272         a TypeRef. This is needed by mono_image_get_memberref_token ().
21273         
21274 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21275
21276         * reflection.c (mono_image_get_type_info): interfaces really don't have
21277         a parent.
21278
21279         * reflection.c (mono_image_basic_init): fill out missing fields of
21280         image structure.
21281
21282         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
21283         dynamic assemblies. This is required so dynamic assemblies show up in
21284         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
21285         Type::GetType() etc. This is consistent with MS behaviour.
21286
21287         * image.c image.h reflection.c: add newly created classes to the name 
21288         cache so mono_class_get () will find them.      
21289
21290 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
21291
21292         First part of changes to get IKVM.NET running under mono.
21293         
21294         * appdomain.h, appdomain.c: added new function 
21295         mono_domain_try_type_resolve() which will emit TypeResolve events. 
21296         This function will call AppDomain::DoTypeResolve to do the actual work.
21297
21298         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
21299         moved existing code dealing with dynamic tokens to a new function 
21300         called mono_reflection_lookup_dynamic_token (). This function will 
21301         raise TypeResolve events when appropriate. Since reflection.c is not 
21302         part of libmetadata, a new hook function called 
21303         mono_lookup_dynamic_token() is added to class.c which will call this.
21304
21305         * assembly.h assembly.c: make the invoke_load_hook function public,
21306         so it can be called for dynamic assemblies.
21307
21308         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
21309
21310         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
21311         type isn't found.
21312
21313         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
21314         MonoGHashTable, since it contains pointers to objects which the GC 
21315         needs to track.
21316
21317         * assembly.c (search_loaded): remove unused variable.
21318         
21319 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
21320
21321         * object.c: fixed issue exposed by gcc-generated IL programs
21322         that use RVA data for pointers.
21323
21324 2003-01-25  Martin Baulig  <martin@ximian.com>
21325
21326         * threads.c (start_wrapper): Moved the initialization of
21327         `start_func' above the mono_new_thread_init() call to which we
21328         pass it as argument.
21329
21330 2003-01-24  Martin Baulig  <martin@ximian.com>
21331
21332         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
21333         the MonoThread pointer.
21334
21335 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
21336
21337         * icall.c: Rename `PowImpl' to Pow.
21338
21339 2003-01-23  Dick Porter  <dick@ximian.com>
21340
21341         * threads.c (start_wrapper): Create a Thread object if needed, so
21342         the Main() thread can do the class initialisation in a subthread
21343         that has been set up to allow managed code execution.
21344
21345         Pass the thread ID instead of the MonoThread pointer to the thread
21346         start and attach callbacks.  This change is required, because the
21347         jit thread start callback must be called _before_ the Thread
21348         object can be created.
21349         
21350         (mono_thread_init): Removed much object creation code that is no
21351         longer needed.  No managed code is called from here now.
21352
21353         * object.c (mono_runtime_exec_managed_code): Create a subthread
21354         for Main, and call back to the runtime to use it.
21355         Set the exit code when Main exits.
21356
21357         * gc.c: Make sure domain finalisation happens in a subthread.
21358         Re-enable threaded GC, fixing bug 31333 (again).
21359
21360         * environment.c: System.Environment internall calls (so far just
21361         ExitCode is here, the others are still in icall.c)
21362
21363         * appdomain.c (mono_runtime_cleanup): All threads running managed
21364         code should have finished before mono_runtime_cleanup() is
21365         reached, so no need to clean up threads.
21366
21367 2003-01-22  Martin Baulig  <martin@ximian.com>
21368
21369         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
21370         `gpointer func' arguments.      
21371         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
21372         but added `MonoThread *thread' argument.
21373         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
21374
21375         * threads.c (mono_new_thread_init): Added `gpointer func' argument
21376         and pass it to the mono_thread_start_cb callback.
21377         (mono_install_thread_callbacks): New public function to install a
21378         set of callbacks which are set by the debugger.
21379         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
21380
21381 2003-01-22  Martin Baulig  <martin@ximian.com>
21382
21383         * Makefile.am: Install debug-mono-symfile.h.
21384
21385 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
21386
21387         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
21388
21389 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
21390
21391         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
21392         * class.c (mono_ptr_class_get): correctly set access levels of pointers
21393         (mono_array_class_get): correctly set access levels of arrays
21394
21395 2003-01-20      Patrik Torstensson
21396         * image.h (MonoAssemblyName): changed major, minor, build, revision
21397         from signed to unsigned.
21398
21399 2003-01-20  sean kasun <skasun@azstarnet.com>
21400
21401         * reflection.c (load_cattr_value): Now this handles
21402         MONO_TYPE_SZARRAY.  Fixes bug #35629
21403
21404 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
21405
21406         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
21407         integer value
21408
21409 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21410
21411         * decimal.c: fixed bug #26056.
21412
21413 2003-01-17  Martin Baulig  <martin@ximian.com>
21414
21415         * gc.c: Raise an ExecutionEngineException instead of using g_error().
21416
21417 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21418
21419         * exception.[ch]:
21420         (mono_get_exception_type_initialization): new function.
21421
21422         * object.c: throw a TypeInitializationException when an exception is
21423         thrown invoking the class constructor.
21424
21425 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21426
21427         * reflection.c: fixed attribute reading.
21428
21429 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21430
21431         * icall.c:
21432         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
21433         provided, look for the type in the calling assembly and then in
21434         mscorlib; if the assembly name is provided, only try that one.
21435
21436 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21437
21438         * object.c: register the vtable before there is a chance it's
21439         queried again recursively.
21440
21441 2003-01-13  Duncan Mak  <duncan@ximian.com>
21442
21443         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
21444         gc-internal.h. 
21445         
21446 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
21447
21448         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
21449
21450 2003-01-11  Martin Baulig  <martin@ximian.com>
21451
21452         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
21453         this to 20 for the release.
21454
21455 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
21456
21457         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
21458
21459         * loader.c (mono_method_get_marshal_info): bug fix
21460
21461         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
21462         structures with explicit layout
21463
21464 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21465
21466         * profiler.c: made the output more readable (and sorted). 
21467         Added caller information for the allocation profiler.
21468
21469 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
21470
21471         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
21472
21473 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21474
21475         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
21476         to get value types.
21477         
21478 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
21479
21480         * object.c, profiler.h, profiler.c, profiler-private.h:
21481         Added object allocation profiler.
21482
21483 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
21484
21485         * reflection.h, reflection.c: handle global methods.
21486         Compress blob entries.
21487
21488 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
21489
21490         * marshal.c: fix compilation.
21491
21492 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
21493
21494         * loader.c (mono_method_get_marshal_info): impl.
21495
21496         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
21497
21498 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21499
21500         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
21501         for reference types.
21502
21503 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
21504
21505         * loader.c: fixed off by one error in loaded parameter names.
21506
21507 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
21508
21509         * marshal.c (mono_marshal_get_icall_wrapper): like
21510         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
21511         instead of a MonoMethod.
21512
21513 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21514
21515         * decimal.c: fixed bug #36537.
21516
21517 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
21518
21519         * marshal.c: throw a missing method exception if a
21520         P/Invoke method is not found.
21521
21522 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21523
21524         * icall.c: allow a null this for constructors.
21525
21526 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21527
21528         * icall.c: raise the proper exceptions if the arguments to the
21529         internal Invoke are incorrect.
21530
21531 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
21532
21533         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
21534
21535 2003-01-03  Martin Baulig  <martin@ximian.com>
21536
21537         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
21538
21539 2002-12-31  Martin Baulig  <martin@ximian.com>
21540
21541         * debug-mono-symfile.c: Completely rewrote the type section.
21542         Instead of using individual malloc()ed fields, we use one big
21543         continuous memory area and offsets into this area.
21544         See the comments in the source code for details.
21545
21546 2002-12-30  Martin Baulig  <martin@ximian.com>
21547
21548         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
21549
21550 2002-12-30  Martin Baulig  <martin@ximian.com>
21551
21552         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
21553         line number table in this data blob instead of using an external
21554         pointer.
21555
21556 2002-12-28  Martin Baulig  <martin@ximian.com>
21557
21558         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
21559
21560 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
21561
21562         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
21563         as a boxed return type.
21564
21565 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
21566
21567         * appdomain.c
21568         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
21569         g_build_filename to properly get separators on the filename created.
21570
21571         * object.h: Small change, introduce MonoMarshalByRefObject to
21572         track the layout of that structure in the C# universe as we make
21573         changes there.
21574
21575 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
21576
21577         * object.c: removed assert to allow static fields on interfaces.
21578         * loader.c: a TypeSpec may be used for any type, not just arrays.
21579
21580 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
21581
21582         * class.c, class.h: added mono_class_array_element_size ().
21583         Ignore static methods in interfaces.
21584
21585 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21586
21587         * threads.c: fixed the build under cygwin.
21588
21589 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
21590
21591         * reflection.c: handle nullref constants. Allocate keys for
21592         reflection handles with the GC.
21593
21594 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
21595
21596         * threads.c, threads.h: added mono_thread_get_abort_signal()
21597         to get a suitable signal for thread abort.
21598
21599 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
21600
21601         * metadata.c: fix handling of ExportedType table.
21602
21603 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21604
21605         * icall.c: added WriteWindowsDebugString internal call.
21606
21607 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21608
21609         * reflection.h: added fields to match C# implementation.
21610
21611 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21612
21613         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
21614
21615 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
21616
21617         * gc.h, gc-internal.h: Rename header for GC internal calls to
21618         gc-internal.h from gc.h as to not clash with Boehm GC having its
21619         header installed as <gc.h> in outside include paths.
21620         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
21621         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
21622
21623 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21624
21625         * icall.c: assign minor, build and revision in FillName.
21626
21627 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
21628
21629         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
21630         Added support for running code generated by Reflection.Emit.
21631
21632 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21633
21634         * appdomain.c: check for NULL argument in LoadFrom.
21635
21636 2002-12-10  Dick Porter  <dick@ximian.com>
21637
21638         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
21639
21640 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21641
21642         * appdomain.c: fix buglet when building exe file name.  Handle full
21643         assembly name (needed after latest changes to AssemblyName).
21644         * image.c:
21645         (mono_image_close): free some hashtables.
21646
21647 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
21648
21649         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
21650         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
21651         on some systems (redhat 7.3) 
21652
21653 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
21654
21655         * threads.c: delete the critical section of a sync block,
21656         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
21657
21658 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
21659
21660         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
21661
21662 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21663
21664         * appdomain.[ch]: handle the assembly preload event to try loading the
21665         assemblies using the paths we have in the current domain.
21666
21667         * assembly.[ch]: created an assembly preload hook that is called to try
21668         loading the assembly by other means that the ones provided here.
21669
21670         * domain.c: initialize the domain search path.
21671
21672         From now on, assemblies (TODO: except corlib and System) are loaded
21673         according to these rules when using mono_assembly_load ():
21674
21675                 1. It tries to load the assembly from the ApplicationBase
21676                 of the current domain appending .dll and .exe (TODO: have to
21677                 try loading from name/name.dll and name/name.exe).
21678
21679                 2. It tries the search path specified in PrivateBinPath for the
21680                 current domain (if any).
21681
21682                 3. Previous behavior.
21683
21684 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
21685
21686         * icall.c: implemented GetInterfaceMap() related icall.
21687         * domain.c, loader.h: load MethodInfo in mono_defaults.
21688
21689 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
21690
21691         * gc.c: disable the finalizer thread for now, untill all the issues
21692         with it are resolved.
21693
21694 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
21695
21696         * string-icalls.c: handle embedded nulls in string ctor when the
21697         length is specified.
21698
21699 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
21700
21701         * class.c: look for explicit interface implementation in parent
21702         classes, too.
21703
21704 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
21705
21706         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
21707
21708 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
21709
21710         * gc.c: protect handles with a critical section.
21711
21712 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21713
21714         * icall.c:
21715         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
21716         parameters. If no assembly specified, try getting the type from all
21717         the assemblies in the current domain, else, load the assembly and get
21718         the type from it.
21719
21720 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21721
21722         * marshal.c: applied patch from Aleksey Demakov that fixes
21723         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
21724
21725 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21726
21727         * icall.c: fixed get_location.
21728
21729 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
21730
21731         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
21732         declarations to make it work with older gcc. 
21733
21734         * loader.c (mono_get_method): set signature->pinvoke for native calls
21735
21736 2002-11-20  Dick Porter  <dick@ximian.com>
21737
21738         * threads.c (mono_thread_init): Set the main thread's handle
21739
21740 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
21741
21742         * gc.c: allow compilation without GC support. Changed to match the
21743         mono coding style.
21744
21745 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
21746
21747         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
21748
21749 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
21750
21751         * reflection.c: set a public key token on the core assemblies.
21752
21753 2002-11-18  Dick Porter  <dick@ximian.com>
21754
21755         * threads.c: Split out some thread initialisation so that other
21756         files can set the start callback function.
21757
21758         * gc.c: Run finalisers in a separate thread, to avoid stack
21759         overflow.  Fixes bug 31333.
21760
21761         * appdomain.c: Set up GC finalisation thread.
21762
21763         * reflection.c: 
21764         * object.c: 
21765         * domain.c: Use gc.h macros for GC_malloc
21766         
21767 2002-11-15  Dick Porter  <dick@ximian.com>
21768
21769         * threadpool.c: 
21770         * threads.c:
21771         * appdomain.c: Removed mono_runtime_init_with_attach(),
21772         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
21773         merging the extra parameter with the existing function.  Removed
21774         unneeded code in mono_thread_attach().
21775
21776 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
21777
21778         * image.c (mono_image_loaded_by_guid): a method to get loaded
21779         images by guid. 
21780         (load_metadata_ptrs): we store the guid as string.
21781
21782 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
21783
21784         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
21785
21786         * metadata.c (mono_guid_to_string): imported method form Zoltan
21787         Varga (slightly modified)
21788
21789         * assembly.c (mono_assembly_open): load precompiled code
21790
21791         * loader.h (MonoMethod): we store the method token for use in the
21792         aot compiler. 
21793
21794 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21795
21796         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
21797         the hook function called when an assembly is loaded.
21798         
21799         * domain.c: Modified file.
21800         (mono_domain_assembly_load): removed hash table insertion of assemblies.
21801
21802         Fixes bug #33196.
21803
21804 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
21805
21806         * reflection.c: Map PEFileKind to the value expected by the WinNT
21807         image loader. 
21808
21809 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21810
21811         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
21812         Read until the buffer is filled completely.
21813
21814 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21815
21816         * icall.c: implemented MonoType.InternalGetEvent ().
21817
21818 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21819
21820         * appdomain.c: implemented InitAppDomainSetup. Delayed
21821         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
21822         the entry_assembly.
21823
21824         * assembly.c: base_dir is now an absolute path ending with
21825         G_DIR_SEPARATOR.
21826
21827         * icall.c: modified get_location according to the above changes.
21828
21829         * object.c: init AppDomain.SetupInformation for the default domain after
21830         we have the entry assembly.
21831
21832         * domain.c: when unloading a domain, setup = NULL.
21833
21834 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
21835
21836         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
21837
21838 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
21839
21840         * object.h, object.c: introduced mono_object_get_virtual_method ()
21841         to lookup the method invoked on an object when a callvirt is done on
21842         a method.
21843         * icall.c: make MethodInfo::Invoke() always do a virtual call.
21844
21845 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21846
21847         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
21848         current domain when loaded an assembly and failed to load it.
21849
21850         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
21851
21852 2002-10-31  Dick Porter  <dick@ximian.com>
21853
21854         * icall.c: 
21855         * file-io.h: 
21856         * file-io.c: Return the error status in a parameter, as the
21857         GetLastError() value has long since been blown away if we try and
21858         look it up in a subsequent internal call invocation.  Delete the
21859         GetLastError() internal call, because it's useless.
21860
21861 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
21862
21863         * class.[ch]: added cast_class to fix bug 29517
21864
21865 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
21866
21867         * marshal.c: create valid IL code in the filter clause:
21868         the new JIT is less forgiving:-)
21869
21870 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21871
21872         * icall.c: removed get_property internal call.
21873
21874 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * appdomain.h domain.c: Added an ID to appdomains.
21877         
21878         * threads.c threads.h icall.c: Implement icall
21879         Thread:GetDomainID(), and remove unused icall 
21880         CurrentThreadDomain_internal.
21881
21882 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21883
21884         * icall.c: Don't recurse through the base types in GetConstructor.
21885         Fixes bug #32063. 
21886
21887 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
21888
21889         * mempool.h, mempool.c: added mono_mempool_empty() and
21890         mono_mempool_stats().
21891
21892 2002-10-23  Dick Porter  <dick@ximian.com>
21893
21894         * file-io.c: 
21895         * file-io.h: 
21896         * icall.c: Added MonoIO.GetFileType internal call
21897
21898 2002-10-17  Dick Porter  <dick@ximian.com>
21899
21900         * appdomain.c (mono_runtime_cleanup): Don't signal the async
21901         delegate semaphore before waiting for all threads to finish,
21902         because new threads can also call async delegates.  Fixes bug
21903         32004.
21904
21905         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
21906         of 3 seconds, in case another async job is queued.  (This part is
21907         needed because the bug fix reintroduced the 3s exit lag.)  This
21908         makes the mono_runtime_shutdown flag superfluous.
21909
21910 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
21911
21912         * reflection.c: include ehader size in method section headers.
21913         Really check for suplicated modules entries.
21914
21915 2002-10-17  Martin Baulig  <martin@gnome.org>
21916
21917         * debug-mono-symfile.c: Added back support for locals.
21918
21919 2002-10-14  Martin Baulig  <martin@gnome.org>
21920
21921         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
21922         MONO_TYPE_VOID.
21923
21924 2002-10-14  Martin Baulig  <martin@gnome.org>
21925
21926         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
21927         mono_class_get() instead of looking in the class cache. 
21928
21929 2002-10-13  Martin Baulig  <martin@gnome.org>
21930
21931         * debug-mono-symfile.c: Set version number to 28, include the
21932         signature in method names.
21933
21934 2002-10-13  Martin Baulig  <martin@gnome.org>
21935
21936         * debug-mono-symfile.h: Set version number to 27.
21937
21938 2002-10-11  Martin Baulig  <martin@gnome.org>
21939
21940         * gc.c: Don't register/unregister NULL pointers as disappearing links.
21941
21942 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
21943
21944         * metadata.c, metadata.h: added helper function to allocate signatures.
21945
21946 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21947
21948         * icall.c: added internal call to get the location of machine.config.
21949
21950 2002-10-08  Martin Baulig  <martin@gnome.org>
21951
21952         * debug-mono-symfile.c: Ignore classes with a pending init for the
21953         moment.
21954
21955 2002-10-03  Dick Porter  <dick@ximian.com>
21956
21957         * threads.c: Freebsd pthread_t is a pointer
21958
21959 2002-10-03  Dick Porter  <dick@ximian.com>
21960
21961         * socket-io.c: Implemented GetHostName_internal
21962
21963 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21964
21965         * mono-config.c:
21966         (mono_config_parse_file): don't leak the text.
21967
21968 2002-10-02  Martin Baulig  <martin@gnome.org>
21969
21970         * debug-mono-symfile.c: Added support for methods.
21971
21972 2002-10-01  Martin Baulig  <martin@gnome.org>
21973
21974         * debug-mono-symfile.c: Don't emit methods and line numbers for
21975         the dynamic symbol file, just write the type table.  We can easily
21976         have an external helper program which creates a symbol file for an
21977         IL file.        
21978
21979 2002-10-01  Dick Porter  <dick@ximian.com>
21980
21981         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
21982         Only add the handle to the cleanup array when we're about to
21983         launch the thread.  Bug 31425 deadlocked when the test was run on
21984         mono under w32.
21985
21986 2002-10-01  Martin Baulig  <martin@gnome.org>
21987
21988         * debug-mono-symfile.c: Added support for properties.
21989
21990 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
21991
21992         * reflection.c: unaligned store fix from Mark Crichton
21993         <crichton@gimp.org>.
21994
21995 2002-09-27  Martin Baulig  <martin@gnome.org>
21996
21997         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
21998         New interncall.
21999
22000 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
22001
22002         * assembly.h, assembly.c: use a sane API to hook into the assembly
22003         loading process instead of a useless special-purpouse hack
22004         (ngen needs a hook, too, for example).
22005
22006 2002-09-27  Dick Porter  <dick@ximian.com>
22007
22008         * threads.c (mono_thread_init): Call GetCurrentProcess() so
22009         io-layer can set up some process handle info.  Not needed on w32,
22010         but doesn't hurt either.
22011
22012         * process.c: Pass the program name in the second parameter to
22013         CreateProcess, so the path is searched.  Include the working
22014         directory. Implemented process name, process enumeration, and some
22015         process detail internal calls.
22016         
22017         * icall.c: Added internal calls for process lookup, and some
22018         process details
22019
22020 2002-09-26  Martin Baulig  <martin@gnome.org>
22021
22022         * assembly.c (mono_install_open_assembly_hook): New global
22023         function to install a function to be invoked each time a new
22024         assembly is loaded.
22025         (mono_assembly_open): Run this callback function if set.
22026
22027         * debug-mono-symfile.c: Put back line numbers for the dynamic
22028         symbol file and also record the .il file as source file.  This
22029         allows us to install the temporary symbol file as `file.dbg' just
22030         like a compiler-generated one.
22031
22032 2002-09-26  Nick Zigarovich <nick@chemlab.org>
22033
22034         * Corrected typo in gc.c (BOHEM vs BOEHM).
22035
22036 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22037
22038         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
22039         GetProperties. Also avoid calling g_slist_length in GetProperties and
22040         GetMethods.
22041
22042 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
22043
22044         * reflection.c: avoid unaligned stores (bug spotted by
22045         Mark Crichton  <crichton@gimp.org>).
22046
22047 2002-09-25  Martin Baulig  <martin@gnome.org>
22048
22049         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
22050         instead of guint64 for addresses and added prologue/epilogue info.
22051
22052 2002-09-25  Martin Baulig  <martin@gnome.org>
22053
22054         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
22055         store line number info.  For the dynamic symbol file, we only need
22056         to provide the JIT generated dynamic line number info for the dynamic
22057         symbol file.
22058
22059 2002-09-25  Martin Baulig  <martin@gnome.org>
22060
22061         * debug-mono-symfile.h: Incremented version number.
22062
22063 2002-09-24  Martin Baulig  <martin@gnome.org>
22064
22065         * class.c (mono_debugger_class_init_func): New global function
22066         pointer variable.
22067         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
22068         call it.
22069
22070         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
22071         function.  This is called via the mono_debugger_class_init_func
22072         hook to add all types to the dynamic type table.
22073         (ves_icall_MonoDebugger_GetType): New interncall to get a class
22074         from its metadata token.
22075
22076         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
22077         New interncall for the debugger.
22078
22079 2002-09-24  Nick Drochak <ndrochak@gol.com>
22080
22081         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
22082         before using it in case it is null.
22083         
22084 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22085
22086         * metadata.c: allow custom modifiers in local var signatures
22087         (bug spotted by Zoltan Varga).
22088
22089 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
22090
22091         * class.c: deal with the <Module> class that may have a NULL vtable.
22092         Eliminate warnings.
22093
22094 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22095
22096         * image.c, image.h: more strong name helpers.
22097         * monosn.c: more work: convert pem keys to cryptoapi format.
22098
22099 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
22100
22101         * string-icalls.c: speedup IndexOf.
22102
22103 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22104
22105         * icall.c: updates from Zoltan.2.Varga@nokia.com.
22106
22107 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22108
22109         * icall.c: cleanup: use mono_object_domain ().
22110
22111 2002-09-23  Martin Baulig  <martin@gnome.org>
22112
22113         * debug-mono-symfile.c: Improved type support.
22114
22115 2002-09-22  Martin Baulig  <martin@gnome.org>
22116
22117         * debug-mono-symfile.c: Added support for reference types and strings.
22118
22119 2002-09-22  Martin Baulig  <martin@gnome.org>
22120
22121         * debug-mono-symfile.c: Started to work on the type table.
22122
22123 2002-09-21  Martin Baulig  <martin@gnome.org>
22124
22125         * debug-mono-symfile.c: Largely reworked the symbol table format.
22126         The symbol table is now incrementally updated each time a new
22127         method is added.  We're now also using our own magic and version
22128         so that you don't need to recompile all your classes if the
22129         dynamic table changes.
22130         (mono_debug_update_mono_symbol_file): Removed.
22131         (mono_debug_symfile_add_method): New function to add a method.
22132
22133 2002-09-21  Martin Baulig  <martin@gnome.org>
22134
22135         * icall.c
22136         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
22137         New interncall.
22138
22139         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
22140         New interncall to get a method from its metadata token.
22141
22142 2002-09-21  Martin Baulig  <martin@gnome.org>
22143
22144         * debug-mono-symfile.c: Create type table.
22145
22146 2002-09-20  Martin Baulig  <martin@gnome.org>
22147
22148         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
22149
22150 2002-09-20  Martin Baulig  <martin@gnome.org>
22151
22152         * debug-mono-symfile.c: Provide information about params and locals.
22153
22154 2002-09-20  Martin Baulig  <martin@gnome.org>
22155
22156         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
22157         New interncall.
22158
22159         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
22160         interncall to get a method from its metadata token.
22161
22162 2002-09-20  Martin Baulig  <martin@gnome.org>
22163
22164         * debug-mono-symfile.c: Added a few checks for method->header
22165         being non-NULL.  This should never happen, but for the moment
22166         let's use a g_warning() rather than a g_assert().
22167
22168 2002-09-19  Mark Crichton  <crichton@gimp.org>
22169
22170         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
22171         even if support for it isn't present.  Added an #ifdef to fix this.
22172
22173         * socket-io.c: Added checks back for Solaris support.
22174
22175 2002-09-19  Martin Baulig  <martin@gnome.org>
22176
22177         * debug-mono-symfile.c (read_string, write_string): Reflect latest
22178         changes in the symbol file format.
22179
22180 2002-09-18  Martin Baulig  <martin@gnome.org>
22181
22182         * debug-mono-symfile.c: Set version number to 21.
22183
22184 2002-09-18  Dick Porter  <dick@ximian.com>
22185
22186         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
22187         on netbsd.  Fixes bug 30051.
22188
22189 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22190
22191         * reflection.c:
22192         (set_version_from_string): little fix.
22193
22194 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22195
22196         * monosn.c, Makefile.am: added strong name utility.
22197         * reflection.h, reflection.c: implemented delayed signing,
22198         locale, version and hash id assembly attributes.
22199
22200 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
22201
22202         * loader.c, metadata.c: load param attributes in signatures.
22203
22204 2002-09-16  Martin Baulig  <martin@gnome.org>
22205
22206         * debug-mono-symfile.c: Added string table with all method names.
22207
22208 2002-09-14  Martin Baulig  <martin@gnome.org>
22209
22210         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
22211         fast method lookup.
22212
22213 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
22214
22215         * reflection.c: record the public key token of referenced assemblies.
22216
22217 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
22218
22219         * image.c, image.h: added functions to get the strong name and the
22220         public key of an assembly.
22221         * pedump.c: use them.
22222
22223 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
22224
22225         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
22226
22227 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
22228
22229         * marshal.c (mono_marshal_get_managed_wrapper): Added
22230         MONO_TYPE_BOOLEAN 
22231
22232 2002-09-11  Martin Baulig  <martin@gnome.org>
22233
22234         * gc.c: Call GC_unregister_disappearing_link() on all links when
22235         finalizing them, this is necessary to aviod a crash in boehm's
22236         finalize handler.
22237
22238 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22239
22240         * gc.c: handle GetTarget for finalized objects spotted and fixed by
22241         nick@chemlab.org.
22242
22243 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
22244
22245         * icall.c: implemented MonoType::Module.
22246         * reflection.c, reflection.h: mono_module_get_object () from
22247         Tomi Pakarinen <tomi.pakarinen@welho.com>.
22248
22249 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
22250
22251         * icall.c: ignore overridden methods in GetMethods ().
22252         Fix for FieldInfo::SetValue().
22253         * object.c: handle float/double in runtime invoke.
22254
22255 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
22256
22257         * object.c: allow a constructor to be called again on an object.
22258
22259 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22260
22261         * class.h, class.c: move field layout code to it's own function and
22262         export it. Get an interface id earlier. Move fields in MonoClass
22263         so they are more cache friendly and align the bitfields.
22264         * loader.c: temporary handle get_param_names() for a runtime method.
22265         * reflection.c, reflection.h: more code to handle runtime creation of
22266         types.
22267
22268 2002-09-09  Martin Baulig  <martin@gnome.org>
22269
22270         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
22271         signature with the pinvoke field being set for the actual call.
22272
22273 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22274
22275         * icall.c: removed some unused icalls. Start of map of glib charsets
22276         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
22277
22278 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
22279
22280         * debug-helpers.c: break infinite loop (found and fixed by
22281         Holger Arnold <harnold@gmx.de>).
22282
22283 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
22284
22285         * icall.c: target may be null in create_delegate.
22286
22287 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22288
22289         * marshal.c: handle a boolean return type.
22290
22291 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22292
22293         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
22294
22295 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
22296
22297         * gc.c: fix weakreferences.
22298
22299 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
22300
22301         * icall.c: added icall to get default codepage.
22302
22303 2002-09-03  Dick Porter  <dick@ximian.com>
22304
22305         * threads.h: 
22306         * threads.c: Use MonoThread instead of MonoObject where
22307         apropriate.
22308
22309         Store running thread objects in a hash table, so that we have all
22310         the info to hand when waiting for them to finish
22311         (means we don't need OpenThread() any more, so mingw builds should
22312         be fully functional again.)
22313
22314         * verify.c:
22315         * object.h: Added thread ID to MonoThread
22316
22317 2002-09-03  Martin Baulig  <martin@gnome.org>
22318
22319         * icall.c (System.Reflection.Assembly::get_location): New interncall.
22320
22321 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22322
22323         * icall.c: fixed leak in get_temp_path. Thanks lupus.
22324
22325 2002-09-03  Martin Baulig  <martin@gnome.org>
22326
22327         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
22328         argument to store the end address of the disassembled instruction.
22329
22330         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
22331         here from debug-symfile.h.
22332         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
22333         JIT into this struct.
22334         (MonoSymbolFile): Added `char *image_file' field.
22335         (MonoDebugGetMethodFunc): Removed.
22336         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
22337         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
22338         (mono_debug_find_method): New method.
22339
22340         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
22341         create a full symbol file.
22342         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
22343         and static symbol files.
22344         (mono_debug_find_method): The symbol file keeps an internal method hash,
22345         call this to get a MonoDebugMethodInfo from a MonoMethod.
22346
22347         * debug-symfile.[ch]: Removed.
22348
22349 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
22350
22351         * image.c (do_mono_image_open): Remove linker version check.
22352
22353 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
22354
22355         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
22356         wrappers for instance methods.
22357         
22358 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22359
22360         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
22361
22362 2002-08-28  Dick Porter  <dick@ximian.com>
22363
22364         * Makefile.am: Export HOST_CC for w32 builds
22365
22366 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
22367
22368         * file-io.c process.c: MonoString are null terminated, no
22369         need for mono_string_to_utf16() anymore.
22370
22371 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22372
22373         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
22374
22375 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
22376
22377         * icall.c, reflection.h: speedup System.MonoType.
22378
22379 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
22380
22381         * reflection.c: allow null as the value of a string argument in
22382         custom attributes constructors.
22383
22384 2002-08-27  Martin Baulig  <martin@gnome.org>
22385
22386         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
22387         `trampoline_address' field.
22388
22389 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
22390
22391         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
22392         check (fixes bug #29486) 
22393
22394 2002-08-27  Martin Baulig  <martin@gnome.org>
22395
22396         * debug-mono-symfile.c: Changed the file format in a way that allows us
22397         open it read-only and to use a specially malloced area for all the
22398         dynamic data.  We can now also generate a symbol file on-the-fly if we're
22399         debugging IL code and there is no MCS generated symbol file for it.
22400
22401 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
22402
22403         * object.c: added a define for a good string and array
22404         creation speedup (not enabled by default because we need to deal with
22405         the synch stuff).
22406
22407 2002-08-26  Martin Baulig  <martin@gnome.org>
22408
22409         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
22410         function to create a dynamic symbol file.  This is used by the
22411         debugger to create a symbol file for IL code on-the-fly.
22412
22413 2002-08-26  Martin Baulig  <martin@gnome.org>
22414
22415         * loader.c (mono_lookup_pinvoke_call): Include the error message
22416         from g_module_error() in the error message.
22417
22418 2002-08-24  Martin Baulig  <martin@gnome.org>
22419
22420         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
22421         function to update the symbol file.  The symbol file is mmap()ed
22422         writable, but private.  This allows us to install the symbol file
22423         together with the assembly.
22424
22425 2002-08-24  Martin Baulig  <martin@gnome.org>
22426
22427         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
22428         but they can read the new symbol file format which mcs is now creating.
22429
22430         * debug-symfile.c (mono_debug_find_source_location): Moved to
22431         debug-mono-symfile.c; this is now operating on the new symbol file.
22432
22433 2002-08-23  Martin Baulig  <martin@gnome.org>
22434
22435         * debug-helpers.c (mono_method_desc_from_method): New function to get
22436         a MonoMethodDesc from a MonoMethod.
22437
22438 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
22439
22440         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
22441         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
22442
22443 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
22444
22445         * string-icalls.[ch]: make helper methods static.
22446
22447 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22448
22449         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
22450         types to it and to SetValueInternal.
22451
22452         * object.c: Moved handle_enum label to its proper place. This was the
22453         f... bug! ;-)
22454
22455         This time i compiled mcs and gtk-sharp and they both work.
22456
22457 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22458
22459         * icall.c: reverted partially my previous patch until 
22460         object.c:set_value handles enums correcly.
22461
22462 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22463
22464         * icall.c:
22465         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
22466         (ves_icall_System_Environment_get_MachineName): removed warning when
22467         compiling under cygwin.
22468
22469 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
22470
22471         * object.c: fixed field_get_value() for reference types.
22472
22473 2002-08-22  Dick Porter  <dick@ximian.com>
22474
22475         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
22476         Don't free a buffer while it's still needed.  Patch from Jonathan
22477         Liger <Jonathan.liger@wanadoo.fr>
22478
22479 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
22480
22481         * icall.c (ves_icall_System_Environment_get_Platform): Add new
22482         internal call.
22483
22484 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
22485
22486         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
22487         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
22488
22489         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
22490         we call unmanaged code which throws exceptions.
22491
22492 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22493
22494         * appdomain.h: added per-domain entry_assembly.
22495         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
22496         arguments.
22497         * icall.c: Assembly::GetEntryAssembly icall.
22498         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
22499         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
22500
22501 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22502
22503         * appdomain.h, gc.c: added mono_domain_finalize ().
22504
22505 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22506
22507         * object.c:
22508         (mono_print_unhandled_exception): changed g_warning by g_printerr
22509         because g_log has a 1024 characters limit (yeah, i got a big stack
22510         trace). Don't print exception name, that should be in ToString 
22511         returned string.
22512
22513 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22514
22515         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
22516         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
22517
22518 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22519
22520         * object.c:
22521         (mono_print_unhandled_exception): after previous commit, i realized
22522         that MS calls ToString on the exception. I changed this function to
22523         do that. This way we get stack_trace for free.
22524
22525 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22526
22527         * object.c:
22528         (mono_print_unhandled_exception): invoke Message property instead of
22529         getting 'message' field from Exception. Don't allocate memory for
22530         'trace' and 'message' if not needed.
22531
22532 2002-08-18  Dick Porter  <dick@ximian.com>
22533
22534         * unicode.c: Fix asserts to match Encoder.cs checks
22535
22536 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22537
22538         * marshal.c: fix unaligned store issue and a few wrong
22539         opcode argument types.
22540
22541 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22542
22543         * icall.c: added GetUninitializedObjectInternal internal call.
22544
22545 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
22546
22547         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
22548         to the right domain.
22549
22550 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
22551
22552         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
22553
22554         * class.c (class_compute_field_layout): set blittable to false for Strings
22555
22556         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
22557
22558 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22559
22560         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
22561         first chunk of code to create types at runtime. Code to
22562         handle ReflectedType/DeclaringType. Make reflection handles
22563         domain specific.
22564
22565 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
22566
22567         * class.c: set correct name in arrays.
22568
22569 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
22570
22571         * appdomain.c (mono_domain_transfer_object): make it work with
22572         valuetypes. bug fixes.
22573
22574 2002-08-12  Dick Porter  <dick@ximian.com>
22575
22576         * object.h: Rename some parameters to avoid c++ keywords (Patch
22577         from Joseph Wenninger <kde@jowenn.at>)
22578
22579 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
22580
22581         * icall.c: added icall to implement Assembly.GetFile*.
22582
22583 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22584
22585         * reflection.h, reflection.c: code to embed managed resources.
22586
22587 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
22588
22589         * class.c: move all the type size stuff into
22590         class_compute_field_layout().
22591
22592 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22593
22594         * class.c: ensure enums have always the correct instance size.
22595         * unicode.c: remove wrong assert.
22596
22597 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
22598
22599         * assembly.c: fix mem corruption issue.
22600         * image.h, image.c: added mono_image_get_resource () to access
22601         managed resources.
22602         * icall.c: implemented Assembly.EntryPoint property and some
22603         Managed Resources related internalcalls.
22604
22605
22606 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
22607
22608         * image.c, image.h: impemented mono_image_get_entry_point ().
22609         * appdomain.c: use mono_image_get_entry_point.
22610
22611 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22612
22613         * reflection.c: support the object type argument when loading
22614         custom attributes.
22615
22616 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
22617
22618         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
22619         String as return type.
22620
22621 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
22622
22623         * reflection.c: fix encoding of named args for custom attrs to match
22624         the ms implementation. Read them back when instantiating custom
22625         attributes.
22626
22627 2002-08-02  Radek Doulik  <rodo@ximian.com>
22628
22629         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
22630         by Dietmar as quick fix
22631         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
22632         16 as stack size, used on more places as quick fix before Dietmar
22633         will fix it properly
22634
22635 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22636
22637         * object.h, object.c: added accessors for fields and properties.
22638
22639 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22640
22641         * class.c, class.h: made mono_class_get_field_from_name ()
22642         loop on parent types.
22643         Added mono_class_get_property_from_name ().
22644
22645 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
22646
22647         * class.c, class.h: move the code to setup the type vtable in its own
22648         function so that it can be reused also for types created at runtime.
22649         Eliminate the "class" identifier from the header file.
22650         * reflection.c: setup the vtable for enums so that we can create
22651         objects for use in SetConstant ().
22652
22653 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
22654
22655         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
22656         instead of the delegate itself as this pointer (bug #28383)
22657
22658 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
22659
22660         * marshal.c (mono_marshal_get_managed_wrapper): added return type
22661         conversions.
22662
22663 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22664
22665         * loader.c: don't set the pinvoke bit on icalls.
22666
22667 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
22668
22669         * debug-helpers.c (mono_method_full_name): only print a number to
22670         indicate wrapper type (so that the output is more readable in traces).
22671
22672 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
22673
22674         * class.c (mono_class_init): include method override patch from Paolo
22675
22676 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
22677
22678         * icall.c: fixed GetTypeCode().
22679
22680 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
22681
22682         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
22683         use real delegate invoke function to make it work with multicast
22684         delegates (fix bug# 28291).
22685
22686 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
22687
22688         * object.c: load constant strings.
22689
22690 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
22691
22692         * reflection.c: no magic numbers.
22693         * tabledefs.h: security action enum.
22694
22695 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
22696
22697         * assembly.c: fix possible memory corruption.
22698
22699 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
22700
22701         * reflection.h, reflection.c: added support for linking resources.
22702         * verify.c: check we have an updated corlib.
22703
22704 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
22705
22706         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
22707         string arrays.
22708         (mono_marshal_string_array): null terminate unmanaged string arrays.
22709         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
22710
22711 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
22712
22713         * icall.c: Type.GetType () can now return also types from the
22714         calling assembly.
22715
22716 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
22717
22718         * loader.h, loader.c: stack walking support.
22719         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
22720         GetCallingAssembly.
22721
22722 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
22723
22724         * marshal.c: added optimisations for blittable types 
22725
22726         * class.c (mono_array_class_get): do not set blittable attribute on arrays
22727         (mono_class_setup_mono_type): set blittable attribute for single
22728         and double.
22729
22730         * marshal.c (mono_string_utf8_to_builder): impl.
22731         (mono_string_builder_to_utf8): impl.
22732         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
22733
22734 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
22735
22736         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
22737         (mono_marshal_get_managed_wrapper): impl. byref types
22738
22739 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22740
22741         * icall.c:
22742         (search_method): don't display debug message. 
22743
22744 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
22745
22746         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
22747
22748 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
22749
22750         * appdomain.c: set the missing filename when throwing exception.
22751
22752 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
22753
22754         * metadata.c (mono_type_size): code cleanup
22755         (mono_type_stack_size): removed some test code
22756
22757 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
22758
22759         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
22760         mono_get_exception_file_not_found now.
22761
22762         * exception.c (mono_exception_from_name_two_strings): New version
22763         that will call a constructor with two string arguments. 
22764         (mono_get_exception_file_not_found): New helper routine, used to
22765         report file-not-found errors.
22766
22767 2002-07-20  Dick Porter  <dick@ximian.com>
22768
22769         * process.h:
22770         * process.c: Pass file handles to CreateProcess
22771         
22772         * icall.c:
22773         * file-io.h:
22774         * file-io.c: Implemented CreatePipe
22775
22776 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
22777
22778         * metadata.c (mono_get_param_info): set alignment for value types
22779
22780 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22781
22782         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
22783         Constify mono_domain_assembly_open().
22784         * loader.c: handle null namespace in icalls.
22785
22786 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
22787
22788         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
22789         (emit_str_to_ptr_conv): marshal object as structs
22790
22791         * metadata.c (mono_type_to_unmanaged): marshal object as structs
22792
22793         * marshal.c (mono_marshal_get_runtime_invoke): support value types
22794
22795 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
22796
22797         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
22798         (mono_marshal_get_native_wrapper): we an now return value types
22799
22800 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22801
22802         * verify.c: more checks implemented.
22803
22804 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
22805
22806         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
22807         (fix bug #27695)
22808         (mono_marshal_get_native_wrapper): allow byref arguments
22809         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
22810         impl. PtrToStringXXX methods
22811         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
22812         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
22813         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
22814         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
22815         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
22816
22817 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22818
22819         * reflection.c: fix buglet in parsing an assembly name.
22820
22821 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
22822
22823         * marshal.c (emit_ptr_to_str_conv): first impl.
22824
22825 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
22826
22827         * object.c, class.h: cache the vtable in the class as suggested by
22828         vargaz@freemail.hu (Zoltan Varga).
22829
22830 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22831
22832         * class.h, loader.c: added mono_field_from_token().
22833         * verify.c: first cut of type checking code.
22834
22835 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
22836
22837         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
22838
22839 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
22840
22841         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
22842         (fix bug #27782)
22843         (mono_marshal_get_remoting_invoke): impl.
22844         (mono_delegate_begin_invoke): impl.
22845         (mono_mb_emit_save_args): impl.
22846         (mono_delegate_end_invoke): impl.
22847         (mono_marshal_get_delegate_begin_invoke):
22848         (mono_marshal_get_delegate_end_invoke):
22849         (mono_marshal_get_delegate_invoke): generate a special name for
22850         those methods (including the signature) and associate them whith
22851         the delegate class. 
22852
22853 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
22854
22855         * reflection.[ch]: 
22856         (mono_reflection_type_from_name): now it has a MonoImage parameter
22857         which is used as the default image to search the type in. If the image
22858         is NULL or getting the type from it fails, it defaults to corlib.
22859
22860         * icall.c: changed 1 call to mono_reflection_type_from_name to match
22861         new parameter.
22862
22863 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22864
22865         * reflection.c: update the parameter table index.
22866
22867 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22868
22869         * domain.c: don't include the mark byte in the string hash.
22870
22871 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22872
22873         * icall.cs: icall for Type.GetTypeCode ().
22874         * verify: a couple of fixes and disabled local initialization checks.
22875
22876 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
22877
22878         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
22879
22880         * debug-helpers.c (mono_method_full_name): print the type of the
22881         runtime wrapper
22882
22883         * metadata.c (mono_signature_hash): a hash function for signatures
22884         (mono_signature_hash): better hash algorithm
22885
22886         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
22887
22888         * debug-helpers.c (mono_method_full_name): this can now generate
22889         method names with signatures
22890
22891         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
22892         method dont have this pointers.
22893
22894 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
22895
22896         * reflection.c: fixup typebuilder tokens.
22897         * image.c: fix buglet.
22898         * marshal.h: remove whitespace.
22899         * metadata.h, metadata.c: reinstate code that was removed.
22900         * verify.c: handle catch directives and fix another couple of bugs.
22901
22902 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
22903
22904         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
22905         (mono_marshal_get_native_wrapper): make it comp. with the old code
22906         (mono_marshal_get_native_wrapper): support boolean
22907         (mono_marshal_get_managed_wrapper): support more types
22908
22909 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
22910
22911         * class.c (class_compute_field_layout): compute class->blittable attribute.
22912
22913 2002-07-09  Dick Porter  <dick@ximian.com>
22914
22915         * threads.c: Make the thread cleaning up cope with threads that
22916         call ExitThread()
22917
22918 2002-07-08  Radek Doulik  <rodo@ximian.com>
22919
22920         * reflection.c (method_encode_code): use non-translated values to
22921         compute finally_start, this fixes exception handling on ppc, yay!
22922
22923         * decimal.h (struct signscale): fix endianess
22924
22925 2002-07-07  Radek Doulik  <rodo@ximian.com>
22926
22927         * reflection.c: swap box_val and not val
22928
22929 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
22930
22931         * reflection.c, reflection.h: handle full assembly info in type name.
22932         Handle Type arguments when loading custom attributes.
22933         * icall.c: updated to use new mono_reflection_type_from_name () method.
22934
22935 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22936
22937         * loader.c:
22938         (method_from_memberref): also print assembly name when method not found.
22939
22940 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22941
22942         * icall.c:
22943         (ves_icall_TypeGetProperties): fixed bug #27473. 
22944
22945 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22946
22947         * reflection.c: display image name and token when cannot find the
22948         .ctor for an attribute.
22949
22950 2002-07-05  Martin Baulig  <martin@gnome.org>
22951
22952         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
22953
22954 2002-07-04  Dick Porter  <dick@ximian.com>
22955
22956         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
22957         compile on mingw.  This will cause mingw builds to not wait for
22958         subthreads to terminate after the main thread does.  I've lodged a
22959         bug with the mingw developers for them to wrap OpenThread().
22960
22961 2002-07-03  Dick Porter  <dick@ximian.com>
22962
22963         * threads.c: Store thread IDs instead of handles, because
22964         GetCurrentThread() returns a pseudohandle and therefore stores
22965         useless values.  mono_thread_cleanup() continues checking the
22966         array of threads until it is empty, to cope with subthreads
22967         spawning new threads after the main thread has finished.
22968
22969         * profiler.h:
22970         * profiler.c:
22971         * profiler-private.h: Pass the thread ID to thread profiler
22972         functions, instead of a handle
22973
22974 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
22975
22976         * verify.c: fixes to make it more usable.
22977         * pedump.c: added --verify code to verify IL code in an assembly.
22978
22979 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22980
22981         * reflection.c: turn errors into warnings to allow compiling corlib.
22982
22983 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
22984
22985         * reflection.c: add special cases to compile corlib.
22986
22987 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
22988
22989         * reflection.c: handle properties with only a set method.
22990
22991 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
22992
22993         * opcodes.h: add enum with opcodes in opval order.
22994
22995 2002-07-01  Dick Porter  <dick@ximian.com>
22996         
22997         * object.h:
22998         * object.c (mono_runtime_run_main): Removed unneeded argument
22999
23000 2002-06-28  Martin Baulig  <martin@gnome.org>
23001
23002         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
23003
23004 2002-06-27  Dick Porter  <dick@ximian.com>
23005
23006         * threads.c: Store the handle in both the parent thread and in the
23007         subthread, to minimise the time between starting a new thread and
23008         storing its ID.
23009
23010 2002-06-26  Dick Porter  <dick@ximian.com>
23011
23012         * appdomain.c (mono_runtime_cleanup): Close the socket library
23013         after all the threads have finished, not before
23014
23015 2002-06-26  Martin Baulig  <martin@gnome.org>
23016
23017         * debug-symfile.c (mono_debug_find_source_location): Added
23018         `guint32 *line_number' argument.  If it's not NULL, store the line number
23019         there and return the file name without the line number.
23020
23021 2002-06-25  Dick Porter  <dick@ximian.com>
23022
23023         * icall.c:
23024         * process.h:
23025         * process.c: Process forking and other support functions
23026
23027 2002-06-25  Dick Porter  <dick@ximian.com>
23028
23029         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
23030         things dont happen when the image is closed.
23031         (mono_image_lookup_resource): Walk the resource section looking
23032         for a particular entry
23033
23034         * cil-coff.h: PE resource section decoding
23035
23036 2002-06-25  Dick Porter  <dick@ximian.com>
23037         
23038         * assembly.h:
23039         * assembly.c: 
23040         (mono_assembly_foreach): Accessor functions to walk the list of
23041         loaded assemblies
23042         (mono_assembly_set_main):
23043         (mono_assembly_get_main): Process methods need to know which
23044         assembly is the "main" one
23045
23046         * object.c (mono_runtime_run_main): Record the main assembly
23047
23048         * debug-helpers.c: Fix typo
23049
23050 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
23051
23052         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
23053         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
23054
23055 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
23056
23057         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
23058
23059 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
23060
23061         * image.c (do_mono_image_open): Initialize reference count,
23062         otherwise we leak the MonoImage.
23063
23064 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23065
23066         * reflection.c: small tweak to handle self-hosting.
23067
23068 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
23069
23070         * reflection.c: fix type name parse code.
23071
23072 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23073
23074         * reflection.c: break out of the loop.
23075         * image.c: special case corlib.
23076
23077 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23078
23079         * reflection.c: add all the custom attrs at the end to ensure the
23080         ctors have been properly initialized when the attributes are defined
23081         in the current assembly.
23082
23083 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23084
23085         * reflection.c: handle correctly multiple-nested types.
23086
23087 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
23088
23089         * row-indexes.h: fix typos.
23090         * reflection.c: adjust for typos and fix method_def_or_ref
23091         encoding in MethodImpl table.
23092
23093 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23094
23095         * reflection.c: fix entry point patching (thanks Serge!).
23096
23097 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
23098
23099         * verify.c: add check for System.Exception
23100
23101 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
23102
23103         * image.c, class.c: minifix for code just c&p'ed.
23104         * reflection.c: warning fix.
23105         * object.h, loader.h, domain.c: load also StringBuilder.
23106
23107 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
23108
23109         * marshal.h, marshal.c: some support code to handle complex marshaling.
23110
23111 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23112
23113         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
23114         Better signatures with vtable error dump.
23115
23116 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
23117
23118         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
23119
23120 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
23121
23122         * icall.c (ves_icall_Type_GetField): impl.
23123
23124 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23125
23126         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
23127         to retrieve a marshal description blob for a field or param.
23128
23129 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
23130
23131         * reflection.h, reflection.c: change order of nested type emission
23132         to avoid table corruption. The NestedTypes table is sorted.
23133         * icall.c: change order of GetConstructor results to workaround mcs bug.
23134
23135 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23136
23137         * reflection.h, reflection.c: handle field and param marshal
23138         information.
23139
23140 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23141
23142         * icall.c, marshal.c marshal.h: more Marshal class implementation.
23143
23144 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23145
23146         * reflection.c: fix call convention.
23147
23148 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23149
23150         * reflection.h, reflection.c: mono_image_get_memberref_token()
23151         takes a type instead of a class, now. Added
23152         mono_image_get_array_token() to create tokens for the special
23153         multi-dim array methods.
23154
23155 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23156
23157         * assembly.c: handle modules (no assembly table). Split
23158         loading references in its own function.
23159         * class.c: handle moduleref resolution scope.
23160         * image.c, image.h: cache module name in image.
23161
23162 2002-06-07  Martin Baulig  <martin@gnome.org>
23163
23164         * reflection.c (mono_image_get_type_info): Only add a class layout entry
23165         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
23166
23167 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
23168
23169         * icall.c: more signature fixes that used uint instead of int.
23170
23171 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23172
23173         * reflection.c: fixed signature of field refs.
23174
23175 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23176
23177         * class.c, reflection.c: handle typerefs of nested types
23178         (both on read and when writing files).
23179
23180 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
23181
23182         * icall.c: fix method signatures that tried to workaround the previous
23183         typo, d'oh!
23184
23185 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23186
23187         * debug-helpers.c: fix typo.
23188
23189 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23190
23191         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
23192         rewrote the PE/COFF writing code (our programs are understood by the
23193         ms runtime, now).
23194
23195 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
23196
23197         * gc.c, gc.h, icall.c: weakreference support.
23198
23199 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
23200
23201         * Makefile.am, mono-config.c: use $(sysconfdir).
23202
23203 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23204
23205         * icall.c: changed default precision of Double.ToString() to 15.
23206         Fixed memory leak. Unified with Single.ToString.
23207
23208 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
23209
23210         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
23211
23212 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
23213
23214         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
23215         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
23216         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
23217         and myself.
23218
23219 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23220
23221         * debug-symfile.c, sysmath.c: yet more compilation fixes.
23222
23223 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23224
23225         * reflection.c, socket-io.c: more compilation fixes.
23226
23227 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23228
23229         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
23230         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
23231         unicode.c: warning and compiler compatibility fixes.
23232
23233 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23234
23235         * class.h, metadata.c: fixed warnings/compilation errors.
23236
23237 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
23238
23239         * Makefile.am, mono-config.c, mono-config.h: configuration file
23240         support routines.
23241         * loader.c, loader.h: make Dll mapping configurable at runtime in the
23242         config file. Export methods to insert and lookup mappings.
23243
23244 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
23245
23246         * reflection.c: handle types and boxed objects in custom attr
23247         constructors.
23248
23249 2002-05-30  Martin Baulig  <martin@gnome.org>
23250
23251         * debug-symfile.c
23252         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
23253
23254 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
23255
23256         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
23257         to lookup the implmap row for a P/Invoke method.
23258         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
23259         P/Invoke method from the runtime on an as needed basis.
23260
23261 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
23262
23263         * metadata.c (mono_metadata_parse_signature): impl.
23264
23265 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23266
23267         * class.c: handle .pack directive.
23268
23269 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
23270
23271         * object.c: initialize static fields with RVA data.
23272
23273 2002-05-25  Martin Baulig  <martin@gnome.org>
23274
23275         * debug-symfile.c
23276         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
23277
23278 2002-05-24  Martin Baulig  <martin@gnome.org>
23279
23280         * debug-symfile.c
23281         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
23282         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
23283         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
23284
23285 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23286
23287         * object.c: special case string ctros in invoke.
23288         * gc.c: silly whitespace changes.
23289
23290 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
23291
23292         * threadpool.[ch]: impl. a threadpool that can
23293         be used by mint and mono.
23294
23295 2002-05-22  Martin Baulig  <martin@gnome.org>
23296
23297         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
23298         The first argument is now a `MonoReflectionModuleBuilder *', the return
23299         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
23300         `methods' field to get the method builder.  The `token' argument is the
23301         unfixed token.
23302
23303         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
23304         invalid characters instead of g_assert_not_reached()ing.  This seems
23305         to be the behaviour of mscorlib.
23306
23307 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
23308
23309         * object.c (mono_runtime_invoke_array): applied patch from Rachel
23310         Hestilow to fix bug #25104
23311
23312 2002-05-21  Martin Baulig  <martin@gnome.org>
23313
23314         * debug-symfile.c (mono_debug_find_source_location): New function.
23315         Looks up an IL offset in the line number table and returns the source
23316         location as a string.
23317
23318 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23319
23320         * icall.c:
23321         (mono_double_ToStringImpl): changed %f by %g until we have something
23322         better.
23323
23324 2002-05-21  Nick Drochak  <ndrochak@gol.com>
23325
23326         * icall.c : Use different name for Math.Pow's icall.  Needed to check
23327         parameters first in C#.
23328
23329 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23330
23331         * icall.c, reflection.h: added icall to get info about an event.
23332
23333 2002-05-20  Radek Doulik  <rodo@ximian.com>
23334
23335         * object.c (mono_value_box): don't use memcpy for boxing on BIG
23336         endian
23337         (mono_value_box): don't use memcpy for small sizes on
23338         architectures with unaligned access
23339
23340 2002-05-20  Martin Baulig  <martin@gnome.org>
23341
23342         * reflection.c (mono_reflection_setup_internal_class): Don't crash
23343         if `tb->parent == NULL'.
23344         (mono_reflection_create_internal_class): New function.  This is
23345         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
23346         for enum types.
23347
23348         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
23349         New interncall.
23350
23351 2002-05-19  Martin Baulig  <martin@gnome.org>
23352
23353         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
23354         argument to get the length, don't default to the array length.
23355
23356 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
23357
23358         * assembly.c (mono_assembly_setrootdir): New function used to
23359         override the MONO_ASSEMBLIES directory.
23360
23361 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23362
23363         * icall.c: ValueType_GetHashCode() initialize local var.
23364
23365 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23366
23367         * reflection.c: sort custom attributes table.
23368
23369 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23370
23371         * reflection.c: support named args in custom attributes (write support).
23372
23373 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
23374
23375         * reflection.c: fix finally position calculation.
23376
23377 2002-05-15  Radek Doulik  <rodo@ximian.com>
23378
23379         * reflection.c: fixed endianess at many places
23380
23381         * icall.c (ves_icall_InitializeArray): comment out debug msg
23382
23383 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
23384
23385         * object.c (mono_unhandled_exception): new function to handle
23386         unhandled exceptions.
23387         (mono_unhandled_exception): call the UnhandledException event.
23388         (mono_runtime_delegate_invoke): impl.
23389
23390 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
23391
23392         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
23393         returns the RVA, not the direct pointer to the data. Handle the case
23394         when the class size is fixed.
23395
23396 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
23397
23398         * reflection.c: fix some endianess issues.
23399
23400 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
23401
23402         * object.c (mono_runtime_invoke): is now able to catch exceptions.
23403
23404         * threads.c (mono_thread_init): added a callback which is invoked
23405         at thread start.
23406
23407 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
23408         
23409         * icall.c: make GetHashCode return non-negative values.
23410
23411 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
23412
23413         * object.c, icall.c, gc.c: revert to address-based hashcode.
23414
23415 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
23416
23417         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
23418
23419 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23420
23421         * icall.c, class.c: special case <Module>.
23422
23423 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
23424
23425         * icall.c: fix bug in GetNow().
23426
23427 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
23428
23429         * object.c (mono_runtime_class_init): make sure that we call all
23430         static class constructors.
23431
23432 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
23433
23434         * reflection.c: sort methodsemantics table.
23435
23436 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
23437
23438         * reflection.h, reflection.c: honour init locals setting.
23439
23440 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
23441
23442         * icall.c: copied Double ToStringImpl for Single ToStringImpl
23443
23444 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23445
23446         * reflection.c: support ContructorBuilders in attribute blob creation.
23447
23448 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23449
23450         * reflection.c: some changes to build a binary that can be run
23451         directly in windows.
23452
23453 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
23454
23455         * loader.c: print a big message when an icall can't be found.
23456
23457 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23458
23459         * string-icalls.c: fix bug 24248.
23460
23461 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
23462
23463         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
23464         icall.c, reflection.h: separate assembly loading by pathname and by
23465         assembly name. Use the MONO_PATH env var to search for assemblies.
23466
23467 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23468
23469         * assembly.c, image.h: add some support for assemblies
23470         with multiple modules.
23471         * class.c, class.h: export mono_class_from_typeref().
23472         * loader.c: remove duplicated code and use mono_class_from_typeref(),
23473         instead.
23474
23475 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23476
23477         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
23478         documentation says (the ECMA one is correct).
23479
23480 2002-05-02  Dick Porter  <dick@ximian.com>
23481
23482         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
23483         Don't name the synchronisation mutex.
23484
23485 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
23486
23487         * rand.c
23488         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
23489         Make the prototypes match.
23490         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
23491         Same.
23492
23493         * icall.c
23494         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
23495         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
23496         all systems have tm.tm_zone, so use strftime() with %Z to print
23497         the timezone abreviation into a temp string.
23498
23499         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
23500         rather than mono_array_addr() on a MonoString on Big Endian
23501         machines.
23502
23503 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
23504
23505         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
23506         fix bug 24041
23507
23508 2002-04-30  Dick Porter  <dick@ximian.com>
23509
23510         * socket-io.c: Cope with SOCKET being an integer rather than a
23511         pointer now.
23512
23513         * threads.c: Added Thread_free_internal, to deal with thread
23514         handle cleanup.  Moved calls to handle_store() and handle_remove()
23515         to start_wrapper(), so each can only be called once.  Allocate
23516         synchronisation blocks with GC_malloc(), and use GC finalisation
23517         to close the handles.
23518
23519         * icall.c: added System.Threading.Thread::Thread_free_internal
23520
23521 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23522
23523         * icall.c: support Environment.Exit, CommandLineArgs().
23524
23525 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
23526
23527         * object.c, object.h: added mono_runtime_run_main () and
23528         mono_runtime_get_main_args () for use in System.Environment.
23529
23530 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
23531
23532         * gc.c: fix thinko, enable actual finalization since the jit is now
23533         fixed.
23534
23535 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23536
23537         * gc.c, object.c: take into account that an object may be offset wrt the address
23538         returned by GC_malloc().
23539
23540 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23541
23542         * image.c: handle files without entries in the assembly table (modules).
23543
23544 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
23545
23546         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
23547         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
23548         allowed to be null when it's System.Object class setup.
23549
23550 2002-04-27  Martin Baulig  <martin@gnome.org>
23551
23552         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
23553         if `tb->parent == NULL' rather than crashing.
23554
23555 2002-04-28  Nick Drochak  <ndrochak@gol.com>
23556
23557         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
23558         calling acos() where asin() should have been called.
23559
23560 2002-04-26  Martin Baulig  <martin@gnome.org>
23561
23562         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
23563         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
23564         there's a subdirectory called `System', but we don't want to read that
23565         subdirectory as an assembly.
23566
23567 2002-04-25  Martin Baulig  <martin@gnome.org>
23568
23569         * debug-symfile.c: Reflect latest MonoString changes.
23570
23571 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
23572
23573         * rand.c, rand.h: instance method icalls need to have an explicit
23574         this pointer as first argument in the C implementation.
23575
23576 2002-04-25  Nick Drochak <ndrochak@gol.com>
23577
23578         * icall.c: Fix typo in map for GetNonZeroBytes
23579
23580 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23581
23582         * string-icalls.c : String does now passes unit tests without any 
23583         errors, the following changes has been made:
23584         
23585         Implemented replace methods.
23586         Renaming of methods to (try) follow the standard.
23587         Fixed compare ordinal
23588         Made all memory allocated directly to function instead of via icall function.
23589         Small performance fix in is_in_array function
23590                         
23591  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
23592
23593         c (mono_string_Internal_ctor_charp_int_int):
23594         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
23595         sindex < 0, throw ArgumentOutOfRangeException instead of
23596         ArgumentNullException.
23597
23598         Added new check for length == 0, however
23599         I need to make it return String.Empty from the C code.
23600         
23601         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
23602         that calculate the length for us here.
23603         
23604         (mono_string_Internal_ctor_sbytep_int_int): Replaced
23605         mono_string_new_utf16 with mono_string_new, since value is utf8.
23606
23607 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23608
23609         * object.c: register the object for finalization if needed.
23610         Allocate one more char in the string for the terminating 0 char.
23611
23612 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
23613
23614         * class.c, class.h, image.c: check if a type implemenst a destructor.
23615         Use the proper key for array class lookups.
23616         * icall.c: register the icalls in the System.GC class.
23617         * gc.c, gc.h: GC-related functions and icalls.
23618
23619 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23620
23621         * icall.c:
23622         * socket-io.c:
23623         * unicode.c: free some strings gotten from mono_string_to_utf8 and
23624         changed a couple of free () by g_free ().
23625
23626         * decimal.c: one-liner in the comments for decimal2string ().
23627
23628 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23629
23630         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
23631
23632 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23633
23634         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
23635         * object.c (mono_runtime_invoke_array) : handle null in params
23636
23637 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23638
23639         * string-icalls.c: fixed bug in split (one off bug)
23640
23641 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23642
23643         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
23644         * icalls.c: added String::Equals as internal method
23645
23646 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23647
23648         * threads.c: fixed bug in the double interlocked functions
23649
23650 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
23651
23652         * threads.c: implemented all of the new interlocked icalls.
23653         * string-icalls.c: fix a bug in insert.
23654         * icalls.c: added the icalls for interlocked, removed old string functions.
23655         
23656 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23657
23658         * loader.c: fix off-by-one error when reading argument names.
23659
23660 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23661
23662         * profiler.c: win32 counter implementation (untested).
23663         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
23664         (the latter needs testing and more complete impl. from win32 folks).
23665
23666 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
23667
23668         * object.c: mono_array_new_full workaround mono_array_class_get
23669         problem.
23670
23671 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23672
23673         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
23674         * object.h (mono_string_chars): Changed casting type.
23675
23676 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23677
23678         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
23679                            method signatures to use gunichar2 instead of gint16.
23680
23681 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
23682
23683         * object.h, object.c: domain-specific versions of mono_object_new and
23684         mono_array_new.
23685
23686 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
23687
23688         * object.c: changed String layout
23689
23690         * string-icalls.c (mono_string_Internal_ctor_chara): added
23691         internal string constructors.
23692
23693 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
23694
23695         * threads.c: pass 'this' to the thread start routine.
23696
23697 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23698
23699         * string-icalls.c: fix IndexOf and LastIndexOf. Now
23700         InternalCompareStr don't call twice mono_string_cmp_char for the last
23701         character. Improved performance in mono_string_cmp_char.
23702
23703 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23704
23705         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
23706         code into its own library: libmonoruntime.
23707
23708 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
23709
23710         * object.h, object.c: changed array format so that szarrays do not
23711         require a bounds structure.
23712         * icall.c, appdomain.c: support for new szarray format.
23713
23714 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
23715
23716         * metadata.c: compare also the retuns type when comparing signatures:
23717         we didn't do this as an optimization since really overloaded methods
23718         must differ also in the arguments, but this doesn't work with
23719         low-level IL code (or when using explicit conversion operators: see
23720         bug#23498 for an example).
23721
23722 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23723
23724         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
23725
23726 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23727
23728         * icall.c: make MonoType::GetElementType its own icall.
23729
23730 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23731
23732         * icall.c: remove MonoMethod_get_Name().
23733         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
23734         object.
23735
23736 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23737
23738         * string-icalls.c: optimized a few methods.
23739
23740 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23741
23742         * icall.c: added all new string internal calls
23743         * string-icalls.c: added, new string internal call implementation.
23744         * object.c: added mono_string_new_size for allocating a string a size
23745
23746 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
23747
23748         * object.c (mono_object_isinst): use the same code as in the
23749         optimized x86 version.
23750
23751 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23752
23753         * profiler.c: TSC-based timer code (faster and more accurate).
23754         Not hooked up in configure, yet (set USE_X86TSC to 1).
23755
23756 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
23757
23758         * profiler.c, profiler.h: track time spent compiling methods.
23759         * threads.c: track thread creation/destruction.
23760
23761 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
23762
23763         * profiler.c, profiler.h, profiler-private.h: profiling interface
23764         and sample implementation. Moved here so that it can be used also by
23765         the jit.
23766
23767 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
23768
23769         * reflection.c, reflection.h: keep types and other handles separate in
23770         the hash tables for referred tokens. Add guid for modules.
23771
23772 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23773
23774         * assembly.c: fix bugs found with valgrind.
23775         * metadata.h, metadata.c: added mono_metadata_guid_heap().
23776
23777 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
23778
23779         * threads: added icall support for getting current domain for
23780                    the thread.
23781  
23782 2002-04-13  Martin Baulig  <martin@gnome.org>
23783
23784         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
23785         (MonoDebugVarInfo): Added `index' field for register based addresses.
23786         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
23787         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
23788         `MonoDebugVarInfo *params' and `guint32 this_offset' with
23789         `MonoDebugVarInfo *this_var'.
23790
23791         * debug-symfile.c (relocate_variable): New static function to write
23792         a location description for a local variable or method parameter.
23793
23794 2002-04-12  Martin Baulig  <martin@gnome.org>
23795
23796         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
23797         stack offset and begin/end scope address of a local variable.
23798         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
23799         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
23800         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
23801
23802         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
23803         Added new relocation types for start/end scope of a local variable.
23804
23805 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23806
23807         * object.h: add mono_object_domain() macro.
23808         * reflection.c: handle typespecs.
23809         * icall.c: MonoMethod::get_Name() implementation.
23810
23811 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23812
23813         * icall.c: String::GetHashCode() icall implementation.
23814
23815 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23816
23817         * icall.c: String::IndexOfAny icall.
23818         * object.c, object.h: make array->max_length more useful.
23819         Intrduced mono_object_class() and mono_string_length() macros.
23820
23821 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23822
23823         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
23824         instead of g_unichar_isdigit.
23825
23826 2002-04-11  Nick Drochak  <ndrochak@gol.com>
23827
23828         * icall.c: Implement a simple Double.ToString().
23829
23830 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23831
23832         * appdomain.h: only io-layer.h is supposed to be included.
23833         * icall.c: explicitly import environ. Fix warning.
23834
23835 2002-04-10  Nick Drochak  <ndrochak@gol.com>
23836
23837         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
23838                 return true even if it's not Daylight Savings time.
23839                 Only return false for the case where the function isn't
23840                 implemented for a plaform (read Windows).
23841
23842 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23843
23844         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
23845         data with a mutex.
23846
23847 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
23848
23849         * mempool.c (mono_mempool_alloc): only use g_malloc when
23850         absolutely necessary.
23851
23852 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
23853
23854         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
23855
23856         * class.c (mono_class_vtable): use domain mempool to allocate vtable
23857         (mono_class_proxy_vtable): use domain mempool
23858
23859 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23860
23861         * appdomain.h, appdomain.c: split initialization that requires the
23862         execution engine support into mono_runtime_init().
23863
23864 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
23865
23866         * class.c (mono_class_init): don't include vtable inside MonoClass
23867         to save some memory, gather some statistics.
23868         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
23869
23870 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23871
23872         * icall.c: internalcall implementation for ValueType.Equals().
23873
23874 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
23875
23876         * object.c (mono_message_init): moved 
23877         (mono_runtime_exec_main): new arch. independent impl.
23878         (mono_runtime_invoke_array): new method - like
23879         mono_runtime_invoke, but you can pass an array of objects.
23880         (mono_remoting_invoke): new arch. independent impl.
23881         (mono_message_invoke): new arch. independent impl.
23882         (mono_runtime_class_init): new arch. independent impl.
23883         (mono_runtime_object_init): new arch. independent impl.
23884
23885 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23886
23887         * metadata.c, object.c, reflection.c: documented the exported
23888         functions.
23889
23890 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23891
23892         * icall.c: simpler code to pass the assembly builder data to corlib.
23893         Implement GetNestedTypes() internalcall.
23894
23895 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23896
23897         * class.c: warn if a type can't be loaded.
23898
23899 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
23900
23901         * image.h: typedef MonoImageOpenStatus
23902         * types.h: removed unused file
23903         
23904 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
23905
23906         * icall.c: Enum_ToObject accepts enum value arguments.
23907
23908 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23909
23910         * class.c: move initialization of properties, events and nested
23911         classes, so that they happen for interfaces, too.
23912
23913 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23914
23915         * icall.c: cleanup some ugly casts in Array_SetValue*.
23916
23917 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23918
23919         * icall.c: the values array fro enums is of the correct type, now.
23920         Implement (correctly) getFullName instead of assQualifiedName for
23921         MonoType.
23922         * reflection.h, reflection.c: added mono_type_get_name ().
23923
23924 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23925
23926         * assembly.c, image.h: for each MonoImage, record from wich assembly
23927         it was loaded.
23928         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
23929         Make Type.Assembly work.
23930
23931 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
23932
23933         * debug-symfile.h: use char* instead of gpointer to avoid
23934         unnecessary casts.
23935
23936         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
23937
23938         * icall.c (ves_icall_InternalExecute): impl. FielSetter
23939         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
23940
23941 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
23942
23943         * icall.c (mono_message_init): impl. (code cleanup)
23944         (ves_icall_InternalExecute): impl. FieldGetter
23945
23946         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
23947         defined we call all (non-static)methods through the vtable. 
23948
23949 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
23950
23951         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
23952         finalizer even though the memory is still referenced (and the chunk of
23953         memory is not freed).
23954
23955 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
23956
23957         * assembly.c: fix brokeness.
23958
23959 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
23960
23961         * class.c: kill some warnings. Check explicit interface method
23962         implementation also without considering the namespace.
23963         Load also literal strings in static class data.
23964
23965 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
23966
23967         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
23968         (default_assembly_name_resolver): Make the resolver take the
23969         "base" directory where the assembly was originally defined, so we
23970         can load DLLs that are in the same directory as the assembly that
23971         is being referenced.
23972
23973 2002-03-28  Dick Porter  <dick@ximian.com>
23974
23975         * file-io.h: 
23976         * file-io.c:
23977         * socket-io.c: 
23978         * unicode.h: 
23979         * unicode.c: Warning cleanups
23980
23981 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
23982
23983         * object.h, reflection.h: use the correct type instead of MonoObject.
23984
23985 2002-03-28  Martin Baulig  <martin@gnome.org>
23986
23987         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
23988         (mono_debug_update_symbol_file): Initialize classes if necessary.
23989
23990 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
23991
23992         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
23993         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
23994
23995 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
23996
23997         * assembly.h: fix function prototype.
23998         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
23999         * mono-endian.h: use const cast.
24000
24001 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
24002
24003         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
24004
24005 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
24006
24007         * loader.c: don't assert when a typeref can't be loaded, give
24008         a chance to the runtime to trow an exception instead.
24009         * loader.h: fix warning.
24010
24011 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
24012
24013         * class.c (mono_class_proxy_vtable): added proxy support
24014
24015 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
24016
24017         * icall.c: removed last of PAL calls, added System.Environment
24018         * file-io.h, file-io.c: MonoIO implementation
24019         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
24020
24021 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
24022
24023         * appdomain.c: do not use the byte marker in ldstr table lookup.
24024         * debug-helpers.c: allow two ':' to separate class and method name.
24025         * object.c: allocate arrays bounds with the GC, too.
24026         * verify: add a few more checks.
24027
24028 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
24029
24030         * reflection.c: output also literal strings. Allocate parameter data
24031         with GC_malloc() (thanks, Martin, for catching this!).
24032
24033 2002-03-26  Martin Baulig  <martin@gnome.org>
24034
24035         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
24036         include the `this' offset in the `param_offsets'.
24037
24038 2002-03-25  Martin Baulig  <martin@gnome.org>
24039
24040         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
24041         mono_debug_get_class() function to get the classes. Added new
24042         relocation types for arrays and strings.
24043         (mono_debug_get_class): New static function to search in all
24044         referenced assemblies for a metadata token.
24045
24046         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
24047
24048 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
24049
24050         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
24051         hold gc-allocated objects. Make the string heap a stream like the
24052         others. Removed duplicated code when writing stream info.
24053         Added asserts to catch possible buffer overflows. Set the sorted map
24054         for tables that need sorting. Added some documentation.
24055
24056 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
24057
24058         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
24059         for interned strings and vtables.
24060
24061 2002-03-24  Martin Baulig  <martin@gnome.org>
24062
24063         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
24064         it in the array since it was created with g_slist_prepend().
24065
24066 2002-03-24  Martin Baulig  <martin@gnome.org>
24067
24068         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
24069         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
24070         (mono_debug_method_from_token): Renamed to
24071         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
24072         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
24073
24074         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
24075         relocation types.
24076
24077         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
24078
24079 2002-03-24  Martin Baulig  <martin@gnome.org>
24080
24081         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
24082         (mono_debug_method_from_token): New func.
24083
24084         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
24085         New interncall, calls mono_debug_local_type_from_signature().
24086         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
24087         calls mono_debug_method_from_token().
24088
24089 2002-03-23  Martin Baulig  <martin@gnome.org>
24090
24091         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
24092         specifies the number of bytes to be converted, not the array size.
24093         Return the number of chars, not the number of bytes.
24094         (ves_icall_iconv_get_chars): The `byteCount' argument
24095         specifies the number of bytes to be converted, not the array size.
24096
24097 2002-03-23  Martin Baulig  <martin@gnome.org>
24098
24099         * reflection.h (MonoReflectionSigHelper): New type.
24100
24101         * reflection.c (mono_reflection_sighelper_get_signature_local),
24102         (mono_reflection_sighelper_get_signature_local): New functions.
24103
24104         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
24105         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
24106         interncalls.
24107
24108 2002-03-23  Martin Baulig  <martin@gnome.org>
24109
24110         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
24111         is_writeable is set.
24112         (mono_raw_buffer_update): New function to write the modified map
24113         back to disk.
24114
24115         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
24116
24117         * debug-symfile.c (mono_debug_update_symbol_file): Call
24118         mono_raw_buffer_update() when done writing.
24119
24120 2002-03-23  Martin Baulig  <martin@gnome.org>
24121
24122         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
24123
24124         * debug-symfile.c: Added support for arguments and local variables.
24125
24126 2002-03-23  Dick Porter  <dick@ximian.com>
24127
24128         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
24129         protected by ifdefs, hence breaking the w32 build.
24130
24131 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24132
24133         * object.c: implement is_interned() the right way.
24134
24135 2002-03-21  Martin Baulig  <martin@gnome.org>
24136
24137         * debug-symfile.[ch]: New files to handle debugging information
24138         files. There's also support to dynamically update these symbol
24139         files to include machine dependent information.
24140
24141 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
24142
24143         * threads.c (mono_thread_create): new function to create thread
24144         from C
24145
24146 2002-03-20  Martin Baulig  <martin@gnome.org>
24147
24148         * icall.c (ves_icall_InternalInvoke): Create a new object if the
24149         method is a constructor.
24150         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
24151         points to ves_icall_InternalInvoke().
24152
24153 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
24154
24155         * file-io.c: Flush shouldn't throw exceptions.
24156
24157 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
24158
24159         * file-io.c: FileStream flush support; FileSetLength now
24160         restores file pointer.
24161
24162 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
24163
24164         * class.c: set image for pointer classes.
24165
24166 2002/03/19  Nick Drochak <ndrochak@gol.com>
24167
24168         * sysmath.c: Forgot one.
24169
24170 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
24171
24172         * sysmath.c: Avoid redefining existing names.
24173
24174 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
24175
24176         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
24177         handled by runtime as icall rather than dllimport from libm.so
24178         * file-io.c, file-io.h: fixed handle argument type.
24179
24180 2002-03-18  Dick Porter  <dick@ximian.com>
24181
24182         * reflection.c (mono_image_get_type_info): rename interface to
24183         iface, because of "#define interface struct" on windows.
24184
24185 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
24186
24187         * class.c, class.h: rename and export mono_ptr_class_get().
24188         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
24189         * reflection.c, reflection.h, icall.c: better/saner type name
24190         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
24191         method signatures.
24192
24193 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
24194
24195         * class.c (mono_class_init): removed hardcoded GHC_SLOT
24196
24197         * icall.c (ves_icall_InternalInvoke): impl.
24198
24199 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
24200
24201         * reflection.c: output the interface map table, too.
24202
24203 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
24204
24205         * class.c (class_compute_field_layout): separate computation of 
24206         static field layout
24207
24208 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
24209
24210         * icall.c: added System.Buffer support.
24211         * file-io.c: moved file icalls from PAL to FileStream.
24212
24213 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
24214
24215         * icall.c (ves_icall_System_Object_GetHashCode): impl.
24216
24217 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
24218
24219         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
24220
24221 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24222
24223         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
24224
24225 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
24226
24227         * debug-helpers.{c,h}: moved here from monograph some useful functions
24228         to locate a method by name/signature in a class or image. Included
24229         also a small and flexible IL disassembler.
24230
24231 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
24232
24233         * reflection.c: fixup tokens in methods with small header size, too.
24234
24235 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
24236
24237         * object.c (mono_string_to_utf8): remove assert(!error), instead
24238         print a warning. 
24239
24240 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
24241
24242         * icall.c: update to the new mono_Array_class_get interface.
24243
24244 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
24245
24246         * appdomain.c, object.c: Boehm-GC enable.
24247         * icall.c: make get_data_chunk() support split data requests.
24248         Ensure a class is initialized in more cases. Return only the first
24249         property found in GetProperties() or the compiler gets confused. 
24250         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
24251         * reflection.h, reflection.c: add fixup mechanism for field and method
24252         tokens. Initialize assembly->typeref in a single place. Output
24253         properties after events. Support custom attributes for events, too.
24254         Typo fix for paramter custom attrs.
24255
24256 2002-03-07  Martin Baulig  <martin@gnome.org>
24257
24258         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
24259
24260 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
24261
24262         * class.c (mono_array_class_get): fix. for multi. dim. arrays
24263
24264 2002-03-06  Martin Baulig  <martin@gnome.org>
24265
24266         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
24267         non-zero lower bounds. See testcases #F10-#F13.
24268
24269 2002-03-05  Martin Baulig  <martin@gnome.org>
24270
24271         * exception.c (mono_get_exception_argument_out_of_range): New exception.
24272
24273         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
24274         ves_icall_System_Array_GetValue(), only calculate the absolute array position
24275         here.
24276         (ves_icall_System_Array_SetValue): Likewise.
24277         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
24278         as argument and does the actual work. This function is used when copying a
24279         multi-dimensional array.
24280         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
24281         now do all the widening conversions of value types.
24282         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
24283
24284 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24285
24286         * class.c: remove some magic numbers and use the smbolic names,
24287         instead. Added init_events() to load event info at class init time.
24288         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
24289         and mono_metadata_methods_from_event().
24290         * reflection.h, reflection.c: added support for writing out the evnets
24291         related information.
24292
24293 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
24294
24295         * reflection.h, icall.c: use a different method (GetInterfaces)
24296         to gather interface info and add isbyref, isprimitive and
24297         ispointer to the ves_icall_get_type_info() return value.
24298
24299 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
24300
24301         * class.h: stared adding support for events.
24302         * icall.c: split find_members implementation. Added debug icall to get
24303         the address of an object.
24304         * reflection.c: handle TypeBuilders in mono_type_get_object().
24305
24306 2002-03-01  Martin Baulig  <martin@gnome.org>
24307
24308         * icall.c (ves_icall_System_Array_GetLength): This must throw an
24309         ArgumentOutOfRangeException(), not an ArgumentException().
24310         (ves_icall_System_Array_GetLowerBound): Likewise.
24311         (ves_icall_System_Array_GetValue): Improved argument checking.
24312         (ves_icall_System_Array_SetValue): Improved argument checking.
24313
24314 2002-03-01  Martin Baulig  <martin@gnome.org>
24315
24316         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
24317         called with invalid arguments rather than just dying with g_assert().
24318         (ves_icall_System_Array_SetValue): Likewise.
24319         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
24320         raise a NotImplementedException instead.
24321         (ves_icall_System_Array_GetLength): Added argument checking.
24322         (ves_icall_System_Array_GetLowerBound): Added argument checking.
24323
24324 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
24325
24326         * object.h (mono_assert): new macros mono_assert and
24327         mono_assert_not_reached
24328
24329 2002-02-28  Martin Baulig  <martin@gnome.org>
24330
24331         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
24332         and "System::String::IsInterned" to "System::String::_IsInterned".
24333
24334 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
24335
24336         * icall.c: remove hacks for typebuilder. Added icall to create a
24337         modified type from a tybebuilder.
24338         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
24339         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
24340         to create a backing MonoClass for a TypeBuilder.
24341
24342 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24343
24344         * class.c, class.h: more refactoring of class init.
24345         Export mono_class_setup_mono_type() and mono_class_setup_parent().
24346
24347 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
24348
24349         * marshal.c, marshal.h: start of marshaling interface.
24350
24351 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
24352
24353         * icall.c: fix order in assembly qualified name icall.
24354
24355 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
24356
24357         * class.c: do not free str, since we store it in the hash table.
24358         * reflection.h: add label field to MonoILExceptionInfo.
24359         * reflection.c: handle references to more than one assembly. Handle
24360         case when there isn't a module created in the assembly.
24361
24362 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
24363
24364         * class.c: Fix typo. Start refactoring of class init code.
24365
24366 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
24367
24368         * appdomain.c: exit with 1 on error.
24369         * class.c: we already have the name in MonoClassField.
24370         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
24371         MonoStreamHeader instead of an offset of image->raw_metadata.
24372
24373 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
24374
24375         * appdomain.c (mono_init): Be even more descriptive about the error.
24376
24377 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
24378
24379         * appdomain.c: give the user an informative message when corlib can't
24380         be loaded.
24381
24382 2002-02-26  Martin Baulig  <martin@gnome.org>
24383
24384         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
24385         New icall to get the time zone data.
24386
24387 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24388
24389         * reflection.c: set virtual and raw size of section correctly.
24390         * threads.c: transfer domain information to newly created threads.
24391
24392 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
24393
24394         * class.c: when instancing a class in a domain, load the default
24395         vaules for static fields from the constant table. Fix System.Enum to
24396         not be an enum.
24397         * icall.c: implement Object::GetType() internalcall. Implemented
24398         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
24399         Fixed checking of binding flags in find_members().
24400         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
24401         * reflection.c: handle enumerations when writing to the constant
24402         table. Use a different object cache for types.
24403
24404
24405 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
24406
24407         * object.c (mono_object_isinst): fix for arrays
24408
24409         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
24410
24411 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
24412
24413         * object.c: don't use mprotect ()  and fix intern pool hash table
24414         lookup for big endian systems.
24415
24416 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
24417
24418         * icall.c: change type_is_subtype_of () signature.
24419
24420 2002-02-21  Mark Crichton  <crichton@gimp.org>
24421
24422         * rand.c, rand.h: Added random number generator for
24423         System.Security.Cryptography classes.
24424
24425         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
24426
24427         * icall.c: Added System.Security.Cryptography calls.
24428
24429 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
24430
24431         * class.c, icall.c, metadata.c: better support for pointer types.
24432         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
24433         * reflection.c: Add support for getting custom attrs for properties
24434         and simplify some code.
24435
24436 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
24437
24438         * icall.c: change getToken () and add custom attribute GetBlob()helper
24439         method.
24440         * reflection.h: add custom attrs array to the reflection builder structures.
24441         * reflection.c: encode and emit custom attributes for all the relevant
24442         reflection objects. Cache fieldref and methodref tokens. Change
24443         mono_image_create_token() interface to take a MonoDynamicAssembly.
24444         More complete custom attributes decoder. Load custom attributes for
24445         Assembly, Field, Method and Constructor objects, too. Make the
24446         returned array an Attribute[] one, not object[]. Added
24447         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
24448         custom attribute constructor.
24449
24450 2002-02-20  Dick Porter  <dick@ximian.com>
24451
24452         * icall.c:
24453         * rawbuffer.c:
24454         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
24455         problem code out for now).
24456
24457 2002-02-19  Radek Doulik  <rodo@ximian.com>
24458
24459         * object.c (mono_ldstr): use hash table to avoid multiple swapping
24460
24461 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
24462
24463         * icall.c: register the GetCustomAttributes method.
24464         * object.c, object.h: add mono_string_new_len ().
24465         * reflection.h, reflection.c: added mono_runtime_invoke(),
24466         mono_install_runtime_invoke(). Added
24467         mono_reflection_get_custom_attrs () to load custom attributes and
24468         create the attribute objects.
24469
24470 2002-02-19  Dick Porter  <dick@ximian.com>
24471         * threads-dummy-types.c:
24472         * threads-dummy-types.h:
24473         * threads-dummy.c:
24474         * threads-dummy.h:
24475         * threads-pthread-types.c:
24476         * threads-pthread-types.h:
24477         * threads-pthread.c:
24478         * threads-pthread.h:  Deleted obsolete files
24479
24480 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
24481
24482         * class.c (mono_class_vtable): runtime init the class when we
24483         allocate static class data.
24484
24485         * icall.c (ves_icall_System_Array_SetValue): check for null values.
24486
24487         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
24488         and String - but we will need generic marshalling support in the
24489         future. 
24490         (mono_init): set the domain name in a ms compatible way
24491
24492         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
24493         String[].
24494
24495 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
24496
24497         * object.c (mono_array_clone): use alloca() instead of g_malloc  
24498         for sizes
24499
24500         * appdomain.c (mono_domain_unload): impl.
24501
24502 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
24503
24504         * appdomain.c, object.c: fix intern pool implementation.
24505         * class.c: fix alignment code.
24506
24507 2002-02-16  Radek Doulik  <rodo@ximian.com>
24508
24509         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
24510         and s2 > s1, just copy lower bytes to be compatible with little
24511         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
24512         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
24513
24514         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
24515         force big_endian to be 1 for big endian machines 
24516         (ves_icall_iconv_new_decoder): ditto
24517
24518 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
24519
24520         * socket-io.c (convert_sockopt_level_and_name): If the system
24521         doesn't define SOL_IP or SOL_TCP, get them by hand using
24522         getprotobyname() and caching the values (because this could be a
24523         slow operation).
24524         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
24525         Use the appropriate struct when the system does support it. Ie,
24526         not all systems have struct ip_mreqn so use struct ip_mreq when
24527         appropriate.
24528
24529 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
24530
24531         * reflection.c: handle finally clauses.
24532
24533 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
24534
24535         * socket-io.c: use g_snprintf() instead of snprintf.
24536
24537 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
24538
24539         * reflection.c (mono_param_get_objects): Cast second argument to
24540         mono_method_get_param_names to a const char** to silence the
24541         compiler warning.
24542
24543         * appdomain.c (mono_domain_assembly_open): Put parens around the
24544         truth statement in the for-loop.
24545
24546         * unicode.c (iconv_convert): Got rid of a compiler warning about
24547         int i being unused when the system has a new iconv.
24548         (iconv_get_length): Same.
24549
24550         * image.c (load_class_names): Cast the second argument to
24551         g_hash_table_insert() to char* to hush compiler warnings about the
24552         arg being a const.
24553         (mono_image_open): Same here.
24554
24555         * socket-io.c: Don't conditionally include sys/filio.h or
24556         sys/sockio.h here anymore since we now get them from
24557         io-layer/io-layer.h
24558         (inet_pton): If the system doesn't support inet_aton, implement
24559         using inet_addr and also #define INADDR_NONE if it isn't defined
24560         by the system.
24561
24562 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
24563
24564         * metadata.c, metadata.h: added function to get packing and size info
24565         of a typedef.
24566         * reflection.h, reflection.c: handle field RVA data. Save info about
24567         the table layout if needed. Assign typedef indexes to all the types
24568         before dumping the info about them to avoid forward reference problems.
24569
24570 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
24571
24572         * socket-io.c (convert_sockopt_level_and_name): ifdef
24573         SO_ACCEPTCONN because it is not defined on my system (old debian)
24574
24575 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
24576
24577         * opcode.c: use stddef.h to get NULL.
24578
24579 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
24580
24581         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
24582         for FIONBIO, FIONREAD and SIOCATMARK.
24583         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
24584         define INADDR_NONE and besides, inet_addr() is deprecated and
24585         should not be used. Use inet_pton() instead - it also has the
24586         added bonus that it can easily handle IPv6 addresses as well.
24587         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
24588
24589 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
24590
24591         * decimal.c: remove _MSC_VER conditional.
24592
24593 2002-02-13  Dick Porter  <dick@ximian.com>
24594
24595         * socket-io.c: 
24596         * icall.c: Internal calls for Blocking, Select, Shutdown,
24597         GetSocketOption and SetSocketOption
24598
24599 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24600
24601         * assembly.cs: better resolver: use it instead of some kludgy
24602         code.
24603
24604 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
24605
24606         * reflection.c: the best way to speed-up the compiler is to avoid
24607         infinite loops.
24608
24609 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
24610
24611         * class.c (mono_class_vtable): changed the object layout
24612         (obj->vtable->class). 
24613         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
24614
24615 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
24616
24617         * assembly.c: look for assemblies in the assembly dir, too.
24618
24619 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24620
24621         * class.c: fix thinko in mono_class_from_type().
24622
24623 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24624
24625         * exception.h, exception.c: added TypeLoadException.
24626         * object.h, object.c: added mono_array_clone ().
24627         * icall.c: handle throwOnError in AssemblyGetType().
24628         Added Array.Clone().
24629         * opcode.h, opcode.c: use a single value for the opcode val.
24630         Compile fix for non-gcc compilers.
24631
24632 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
24633
24634         * opcodes.c, opcodes.h: export interesting info about opcodes.
24635
24636 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
24637
24638         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
24639         icalls. 
24640
24641         * class.c (class_compute_field_layout): set element_class for enums
24642         (mono_class_create_from_typedef): set element_class for normal classes
24643
24644         * icall.c (ves_icall_System_Enum_get_value): impl.
24645
24646         * class.c (mono_class_create_from_typedef): do not set valuetype
24647         flag for System.ValueType and System.Enum
24648
24649 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
24650
24651         * unicode.c (iconv_convert): fix big endian problem.
24652
24653 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
24654
24655         * class.c: add asserts if we are ever going to scribble over memory.
24656         * socket-io.c: not all systems have AF_IRDA defined.
24657
24658 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
24659
24660         * class.c (class_compute_field_layout): do not consider static
24661         fields to compute alignment
24662
24663 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
24664
24665         * appdomain.c (mono_appdomain_get): impl.
24666         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
24667
24668 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
24669
24670         * icall.c: ignore "file://" prefix when loading an assembly.
24671
24672 2002-01-23  Dick Porter  <dick@ximian.com>
24673
24674         * socket-io.c:
24675         * icall.c:
24676         * Makefile.am: Added socket support
24677
24678 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
24679
24680         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
24681         code back.  This should return the assemblies that are loaded by
24682         the runtime on behalf of an application domain. 
24683
24684         The current implementation is still broken, it just returns every
24685         assembly loaded, but until we get real applications domain this
24686         will do.
24687
24688 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
24689
24690         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
24691         AppDomain object.
24692
24693 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
24694
24695         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
24696         the mono_class_from_name lookup.
24697         (ves_icall_get_parameter_info): ditto.
24698         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
24699         method.
24700         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
24701
24702 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
24703
24704         * class.c: load also nested classes on class init.
24705         System.ValueType instance methods gets passed boxed
24706         values, unless methods in derived classed that get a pointer to the
24707         data.
24708         * icall.c: use better name parsing code in GetType().
24709         * image.c, image.h: add mono_image_loaded ().
24710         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
24711         * reflection.c, reflection.h: added mono_reflection_parse_type().
24712
24713 2002-01-22  Veronica De Santis <veron78@interfree.it>
24714
24715         * icall.c : Added mapping of internal calls for Manual and Auto reset events
24716         * threads.c : Added the implementation of internal calls for events
24717         * threads.h : Added prototypes of internal calls for events
24718         
24719 2002-01-21  Radek Doulik  <rodo@ximian.com>
24720
24721         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
24722
24723 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
24724
24725         * class.c (mono_class_init): set min_align to 1 (instead of 0)
24726         (mono_class_value_size): use min_align
24727
24728 2002-01-20  Dick Porter  <dick@ximian.com>
24729
24730         * threads.h:
24731         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
24732         so it compiles on w32.
24733
24734 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
24735
24736         * metadata.c (mono_type_stack_size): impl.
24737
24738         * class.c (mono_class_get_field): impl. memberref token
24739
24740 2002-01-16 Veronica De Santis <veron78@@interfree.it>
24741
24742         * icall.h : Added the internal calls mapping for CreateMutex_internal
24743                     and ReleaseMutex_internal.
24744         * threads.h : Added the prototype of mutexes internal calls.
24745         * threads.c : Added the implementations of mutexes internal calls.
24746
24747 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
24748
24749         * metaparse.h: removed unused file.
24750         * reflection.c, reflection.h: added stream_data_align () function 
24751         to align data in streams and keep stream aligned. Add support for
24752         exception support in method headers.
24753
24754 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
24755
24756         * unicode.c: make iconv_convert () return the number of bytess written
24757         in the output buffer.
24758
24759 2002-01-15  Dick Porter  <dick@ximian.com>
24760         * threads.c: Make the runtime's idea of infinite timeouts coincide
24761         with the class library's
24762
24763         Fix a particularly egregious bug in mono_thread_cleanup(). That
24764         code was so utterly bogus it must have been written on a Monday.
24765
24766 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
24767
24768         * reflection.h: add subtypes field to TypeBuilder.
24769         * reflection.c: encode constants for literal fields.
24770         Handle subtypes. Fix user string token (and add a zero byte)
24771         at the end.
24772         
24773 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
24774
24775         * class.c (mono_class_init): bug fix: assign slot numbers for
24776         abstract methods.
24777
24778 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24779
24780         * reflection.c: don't try to output a code RVA for abstract methods.
24781         Small fixes for method header format. Output parameter info to the
24782         ParamDef table. Save method overriding info to MethodImpl table.
24783         Fix property support. Allow typedef.extends to be a type in the
24784         building assembly.
24785         * verify.c: fix off-by-one error.
24786
24787 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
24788
24789         * class.c: fix mono_class_from_mono_type () for szarray types.
24790         Remove unused cache check in mono_class_from_type_spec().
24791         * icall.c: *type_from_name () functions handle simple arrays and byref.
24792         * reflection.c: handle byref and szarray types. Handle methods without
24793         body (gets P/Invoke compilation working). Handle types and fields in
24794         get_token ().
24795         * reflection.h: add rank to MonoTypeInfo.
24796
24797 2002-01-10  Dick Porter  <dick@ximian.com>
24798
24799         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
24800         internal calls
24801
24802 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
24803
24804         * icall.c: initialize class in type_from_handle ().
24805         Loop also in parent classes for get_method ().
24806         * reflection.c: properly encode class and valuetype types.
24807         Start on encoding TypeBuilder types. Handle fieldrefs.
24808         Use correct length when registering a user string.
24809         Handle ConstructorBuilder and MonoMethod in get_token ().
24810         Make mono_type_get_object () aware of cached types.
24811         * object.c: back out change to mono_string_new ().
24812
24813 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
24814         * object.c: mono_string_new should return a NULL when the string 
24815         passed in is NULL -- not try to deference it.
24816         
24817 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
24818
24819         * icall.c: hack to make IsSubType work for TypeBuilders.
24820         * reflection.c: emit constructors before methods.
24821         Retrieve param names in mono_param_get_objects().
24822
24823 2002/01/05  Nick Drochak  <ndrochak@gol.com>
24824
24825         * Makefile.am: fix list of headers and sources so automake 1.5
24826         doesn't complain. Removed \# at end of list.
24827
24828 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
24829
24830         * reflection.c: get token for a method ref. Set return type of
24831         constructor to void.
24832         * loader.c: debug message.
24833         * class.c: typo fix.
24834
24835 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
24836
24837         * icall.c: fix array init with rank > 1. FindMembers
24838         loops in parent class as well.
24839         * image.c: do not insert nested types in name cache.
24840         * reflection.c: warning fix.
24841         * reflection.h: add override method (for interface impl).
24842
24843 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
24844
24845         * metadata.c: fix customattr decoding.
24846
24847 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
24848
24849         * rawbuffer.cs: Added native Win32 implementation, avoids using
24850         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
24851
24852 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
24853
24854         * class.c: make the low-level routines handle the cache.
24855
24856 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
24857
24858         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
24859
24860 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
24861
24862         * class.c: fix mono_array_element_size() for objects.
24863         * class.h, class.c: add properties to MonoClass and load them
24864         at init time.
24865         * icall.c: check with isinst() when assigning a value to an array
24866         instead of requiring the classes to match exactly.
24867         Implemented icall for System.Type::GetType().
24868         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
24869         enums. Handle bindingflags when looking for methods and fields.
24870         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
24871         and mono_metadata_methods_from_property().
24872         * reflection.h, reflection.c: added structures for propreties,
24873         parameters and enums. Implemented mono_property_get_object() and
24874         mono_param_get_objects().
24875
24876 2001-12-18  Dick Porter  <dick@ximian.com>
24877
24878         * file-io.c: Use mono_string_to_utf16() instead of
24879         mono_string_chars()
24880
24881         * object.c: Added mono_string_to_utf16(), which copies the non
24882         NULL-terminated MonoString into a new double-null-terminated
24883         buffer.
24884
24885 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
24886
24887         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
24888
24889 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
24890
24891         * file-io.c: raise exceptions if handle is invalid.
24892
24893 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
24894
24895         * assembly.c: yet another check for mscorlib.
24896         * class.c, class.h: load nesting info for classes.
24897         * icall.c: many new functions to support the Reflection classes.
24898         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
24899         * reflection.h, reflection.c: mono_image_create_token(),
24900         mono_assembly_get_object(), mono_type_get_object(),
24901         mono_method_get_object(), mono_field_get_object(): methods to return
24902         objects that parallel the C representation of assemblies, types,
24903         methods, fields.
24904
24905 2001-12-11  Dick Porter  <dick@ximian.com>
24906
24907         * icall.c:
24908         * file-io.c: Internal calls for file IO.
24909
24910 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
24911
24912         * tabledefs.h: missing FileAttributes.
24913         * verify.h, verify.c: use is_valid_string () to simplify and check for
24914         valid strings more correctly. Fix warnings and speeling.
24915         Check more tables: Filed, File, ModuleRef, StandAloneSig.
24916         Check code: branches, maxstack, method calls.
24917
24918 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
24919
24920         * object.c (mono_object_allocate): removed static, so that the jit
24921         can allocate value types.
24922
24923         * icall.c (ves_icall_System_DateTime_GetNow): impl.
24924
24925 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
24926
24927         * class.c: init enum types right away and register the
24928         token->MonoClass map in mono_class_create_from_typedef ().
24929         * verify.h, verify.c: first cut of the verifier.
24930         * pedump.c: add --verify switch to verify metadata tables.
24931         * tabledefs.h: add some missing enums.
24932
24933 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
24934
24935         * class.c (mono_install_runtime_class_init): impl.
24936         (mono_class_init): renamed mono_class_metadata_init to
24937         mono_class_init, also removed the metadata_inited flag
24938
24939         * object.c (mono_object_isinst): use faster algorithm
24940
24941 2001-11-30  Radek Doulik  <rodo@ximian.com>
24942
24943         * mono-endian.h: reverted last change
24944         added function prototypes
24945
24946         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
24947         add mono-endian.c back
24948
24949         * mono-endian.c: returned back, as Paolo pointed out, it's needed
24950         for unaligned access, I've mistaked it with endianess. I am
24951         sorry.
24952         (mono_read16): fix reverted endianess
24953         (mono_read64): ditto
24954         (mono_read32): ditto
24955
24956 2001-11-30  Dick Porter  <dick@ximian.com>
24957
24958         * exception.c: Implement mono_exception_from_name()
24959
24960 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
24961
24962         * metadata.h, metadata.c: remove params_size and locals_size and their
24963         calculation from the metadata code: they are only usefult to the
24964         interp.
24965
24966 2001-11-29  Radek Doulik  <rodo@ximian.com>
24967
24968         * object.c (mono_ldstr): swap bytes here, it's probably not the
24969         best place, but works for me now, I'll redo it once I know mono
24970         better, also note that I add PROT_WRITE and don't reset back, also
24971         note that it's only affects big endians, so x86 should be OK
24972
24973         * mono-endian.h (read16): use just glib macros for both endians
24974
24975         * mono-endian.c: removed as glib macros are used in in
24976         mono-endian.h so we don't need to care about endianess for read
24977         macros as glib does that for us already
24978
24979 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
24980
24981         * class.h, class.h: take minimum alignment into consideration so
24982         that the fields of a class remain aligned also when in an array.
24983
24984 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
24985
24986         * loader.h, loader.c: add mono_method_get_param_names().
24987         * class.c: 0-init class fields.
24988
24989 2001-11-26  Dick Porter  <dick@ximian.com>
24990
24991         * icall.c:
24992         * threads-types.h:
24993         * threads.c: New file that handles System.Threading on all platforms
24994
24995         * object.c: 
24996         * object.h: Remove the synchronisation struct from MonoObject,
24997         replace it with a pointer that gets initialised on demand
24998
24999         * Makefile.am: Replace all the system-specific threading code with
25000         a single file that uses the new wrapper library
25001
25002 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
25003
25004         * class.c, class.h: add mono_install_trampoline() so that the runtime
25005         can register a function to create a trampoline: removes the ugly
25006         requirement that a runtime needed to export arch_create_jit_trampoline.
25007         * object.h, object.c: added mono_install_handler() so that the runtime
25008         can install an handler for exceptions generated in C code (with
25009         mono_raise_exception()). Added C struct for System.Delegate.
25010         * pedump.c: removed arch_create_jit_trampoline.
25011         * reflection.c: some cleanups to allow registering user strings and
25012         later getting a token for methodrefs and fieldrefs before the assembly
25013         is built.
25014         * row-indexes.h: updates and fixes from the new ECMA specs.
25015
25016 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
25017
25018         * class.h, class.c: add enum_basetype field to MonoClass.
25019         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
25020         to get index in the constant table reated to a field, param or
25021         property.
25022         * reflection.h, reflection.c: handle constructors. Set public-key and
25023         version number of the built assembly to 0.
25024         * row-indexes.h: update from new ECMA spec.
25025
25026 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
25027
25028         * class.h, class.c: add a max_interface_id to MonoClass.
25029         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
25030         since it's used to do that. Added mono_type_type_from_obj().
25031         Make GetType() return NULL instead of segfaulting if the type was not
25032         found. Handle simple arrays in assQualifiedName.
25033         * object.h: add a struct to represent an Exception.
25034         * reflection.c: output call convention in method signature.
25035         Add code to support P/Invoke methods and fixed offsets for fields.
25036
25037 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
25038
25039         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
25040         the value.
25041         * icall.c: use mono_array_addr instead of array->vector: fixes the
25042         reflection image writing.
25043         * reflection.c: init call convention byte to 0 in method signature.
25044         Encode the property signature. Don't output property-related methods
25045         twice. Really process the properties for a type (don't cast a field to
25046         a property, my mom always told me that).
25047         Fix 64 bit issues in pointer alignment in a different and more
25048         readable way.
25049
25050 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
25051
25052         * loader.h: Removed type class from MonoDefaults, added monotype
25053
25054         * loader.c: Loaded MonoType, removed loading of Type
25055
25056         * icall.c (my_mono_new_object): Now returns a System.MonoType,
25057         and fills in System.Type._impl with a RuntimeTypeHandle rather
25058         than the actual MonoClass *
25059
25060         (ves_icall_type_from_handle): change from type_class to
25061         monotype_class
25062
25063         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
25064         implemented
25065
25066         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
25067         implemented
25068
25069         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
25070
25071         (ves_icall_System_Reflection_Assembly_GetType): implemented
25072
25073         (ves_icall_System_MonoType_assQualifiedName): implemented
25074
25075         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
25076
25077 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
25078
25079         * assembly.c (mono_assembly_open): Implement a cache for the
25080         assemblies. 
25081
25082         (mono_assembly_close): only destroy the assembly when the last
25083         reference is gone.
25084         
25085 2001-11-09  Dick Porter  <dick@ximian.com>
25086
25087         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
25088
25089 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
25090
25091         * class.c (mono_class_metadata_init): bug fix: compute the right slot
25092
25093 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
25094
25095         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
25096         from Martin Weindel.
25097         * object.h: add mono_string_chars ().
25098
25099 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
25100
25101         * reflection.c (build_compressed_metadata): Eliminates warnings
25102         and uses 64-bit clean code.
25103
25104         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
25105         (mono_type_equal): Change signature to eliminate warnings.
25106
25107 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
25108
25109         * icall.c, loader.c: remove the internalcall array constructors.
25110         Changes to match the new MonoArray structure.
25111         * object.h, object.c: an array object doesn't allocate an extra
25112         vector. Add mono_array_new_full () to create jagged arrays easily.
25113
25114 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
25115
25116         * metadata.h, metadata.c: add mono_metadata_field_info () to
25117         retreive all the info about a field from vairous tables.
25118         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
25119         * class.h, class.c: augment MonoClassField with more info.
25120         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
25121         policy and load a field's RVA if needed.
25122
25123 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
25124
25125         * class.c (mono_class_metadata_init): create a trampoline for all
25126         virtual functions instead of actually compiling them.
25127
25128 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
25129
25130         * class.h, class.c: include name in MonoClassField.
25131         * class.c: fix fundamental type of System.Object and System.String.
25132         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
25133         tokens in ldtoken.
25134         * icall.c: remove internalcalls for the Reflection stuff that is now
25135         done in C# code.
25136         * loader.c: mono_field_from_memberref () implementation.
25137         * mono-endian.c: thinko (s/struct/union/g).
25138         * object.c, object.h: make the mono_string_* prototypes actually use
25139         MonoString instead of MonoObject.
25140         * reflection.c, reflection.h: updates for changes in the reflection
25141         code in corlib: we use C structures that map to the actual C# classes.
25142         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
25143         fat method header if needed and use the info from the ILGenerator for
25144         methods. Handle fields in types. Misc fixes.
25145
25146 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
25147
25148         * class.c (mono_class_metadata_init): bug fix: always allocate
25149         space for static class data
25150
25151 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
25152
25153         * class.c (mono_compute_relative_numbering): use relative
25154         numbering to support fast runtime type checks.
25155
25156 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
25157
25158         * class.c (mono_class_create_from_typeref): added debugging output
25159         to print class name when MonoDummy is returned instead of real class
25160
25161 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
25162
25163         * class.c (mono_class_metadata_init): interface offset table now
25164         contains pointers into the vtable - this is more efficient for the jit
25165
25166 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
25167
25168         * class.c (mono_class_metadata_init): use a temporary vtable (the
25169         old algorithm only worked for the interpreter, but not for the jit)
25170
25171 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
25172
25173         * loader.c (method_from_memberref): use mono_class_get to get the
25174         class of an array instead of using System.Array directly.
25175         (mono_get_method): also add MEMBERREF methods to the method cache
25176         which usefull for arrays.
25177
25178 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
25179
25180         * pedump.c (arch_compile_method): added to compute vtable entry
25181
25182         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
25183         number of interfaces.
25184         
25185         * class.h: merged MonoArrayClass into MonoClass
25186
25187         * class.c (mono_class_create_from_typedef): compute the vtable size and
25188         allocate space to include the vtable inside MonoClass
25189         (mono_class_metadata_init): initialize the vtable
25190
25191 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
25192
25193         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
25194         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
25195         * image.c: endian fixes by Laurent Rioux.
25196         * object.h, object.c: rename MonoStringObject to MonoString and
25197         MonoArrayObject to MonoArray. Change some function names to conform to
25198         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
25199         guint16* as first argument, so don't use char*.
25200         Provide macros to do the interesting things on arrays in a portable way.
25201         * threads-pthread.c: updates for the API changes and #include <sched.h>
25202         (required for sched_yield()).
25203         * icall.c: updates for the API changes above.
25204         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
25205         platforms that need them.
25206
25207 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
25208
25209         * class.c: set the correct type for all the fundamental
25210         type when loading the class.
25211
25212 2001-10-05  Dick Porter  <dick@ximian.com>
25213
25214         * threads-pthread.c (pthread_mutex_timedlock): Simple
25215         compatibility version for C libraries that lack this call.
25216
25217 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
25218
25219         * class.c: MonoTypes stored in MonoClass are stored as
25220         fundamental MonoTypes when the class represents a
25221         fundamental type (System.Int32, ...).
25222         The TypeHandle return by ldtoken is a MonoType*.
25223         * icall.c: ves_icall_get_data_chunk () write out all the
25224         PE/COFF stuff. Implement ves_icall_define_method (),
25225         ves_icall_set_method_body (), ves_icall_type_from_handle ().
25226         * image.c: properly skip unknown streams.
25227         * loader.h, loader.c: add type_class to mono_defaults.
25228         * metadata.c, metadata.h: export compute_size () as
25229         mono_metadata_compute_size () with a better interface.
25230         Typo and C&P fixes.
25231         * pedump.c: don't try to print the entry point RVA if there is no entry point.
25232         * reflection.c, reflection.h: many cleanups, fixes, output method
25233         signatures and headers, typedef and typeref info, compress the metadata
25234         tables, output all the heap streams, cli header etc.
25235         * row-indexes.h: typo fixes.
25236
25237 2001-10-04  Dick Porter  <dick@ximian.com>
25238
25239         * object.h: Add a synchronisation mutex struct to MonoObject
25240
25241         * object.c (mono_new_object): Initialise the object
25242         synchronisation mutexes
25243
25244         * icall.c: System.Threading.Monitor internal calls
25245         
25246         * threads-pthread.h:
25247         * threads-pthread.c: System.Threading.Monitor internal calls
25248
25249         * threads-types.h: New file, includes the system-specific thread
25250         structures
25251         
25252         * threads-pthread-types.h:
25253         * threads-pthread-types.c: New files, handle pthread-specific
25254         synchronisation types
25255
25256         * threads-dummy-types.h: 
25257         * threads-dummy-types.c: New files of dummy support for
25258         thread-specific types
25259
25260         * metadata.c:
25261         * image.c:
25262         * pedump.c: include mono-endian.h not endian.h
25263         
25264         * Makefile.am: More threads files.
25265         Name mono-endian.h not endian.h
25266
25267 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
25268
25269         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
25270         stuff and implement a few more bits.
25271         * icall.c: a field needs to be dereferenced twice. Do not use the same
25272         name for two variables in the same scope.
25273         * image.c, image.h: cleanups.
25274
25275 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
25276
25277         * class.c (mono_class_metadata_init): bug fix: compute the right size
25278
25279 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
25280
25281         * icall.c: implemented some of the Reflection internalcalls.
25282         * image.c, image.h: start writing out the PE/COFF image.
25283         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
25284         that does the reverse than decode_blob_size ().
25285         * object.c: use mono_metadata_encode_value (). Move here
25286         temporary implementation of mono_string_to_utf8 ().
25287         * rawbuffer.c: make malloc_map static.
25288
25289 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
25290
25291         * metadata.c: fix type comparison for arrays.
25292         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
25293         Added a couple of new classes to monodefaults.
25294         * icall.c: added a couple of Reflection-related internalcalls.
25295         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
25296         Added a byval_arg MonoType to MonoClass.
25297
25298 2001-09-28  Dick Porter  <dick@ximian.com>
25299
25300         * icall.c:
25301         * threads-pthread.h: 
25302         * threads-pthread.c: Implemented internal calls for
25303         LocalDataStoreSlot operations.  Applied mutexes around all shared
25304         data.  Reworked the thread creation and Start() operations to
25305         avoid a race condition.
25306         
25307         * threads-dummy.h:
25308         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
25309
25310 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
25311
25312         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
25313
25314 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
25315
25316         * class.c, loader.c: warn and return NULL instead of erroring out.
25317         * icall.c: added System.AppDomain::getCurDomain().
25318         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
25319
25320 2001-09-25  Dick Porter  <dick@ximian.com>
25321
25322         * threads-pthread.h:
25323         * threads-pthread.c: Implemented timed thread joining and added
25324         System.Threading.Thread::Join_internal internal call
25325
25326         * icall.c: Added System.Threading.Thread::Join_internal internal call
25327
25328         * threads-dummy.h:
25329         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
25330
25331 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
25332
25333         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
25334         mono_string_intern () to implement the semantics of the ldstr opcode
25335         and the interning of System.Strings.
25336         * icall.c: provide hooks to make String::IsIntern and String::Intern
25337         internalcalls.
25338
25339 2001-09-23  Dick Porter  <dick@ximian.com>
25340
25341         * threads-dummy.c: 
25342         * threads-dummy.h: New files of dummy threading routines
25343
25344         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
25345         support code based on system specifics
25346
25347         Rename PTHREAD_LIBS to THREAD_LIBS
25348         
25349 2001-09-23  Dick Porter  <dick@ximian.com>
25350
25351         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
25352         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
25353         internal calls.
25354         (mono_thread_init): Set up a Thread object instance to return when
25355         the main thread calls Thread.CurrentThread
25356         (mono_thread_cleanup): Wait for all subthreads to exit
25357
25358         * icall.c: New internal calls for System.Threading.Thread::Sleep
25359         (including Schedule) and CurrentThread
25360
25361         * threads.h: New file, to insulate thread-specific stuff from the
25362         rest of the code
25363
25364 2001-09-21  Dick Porter  <dick@ximian.com>
25365
25366         * threads-pthread.h: 
25367         * threads-pthread.c: New file, for handling pthreads-style
25368         threading support.  Start() now starts a new thread and executes
25369         the ThreadStart delegate instance.
25370
25371         * icall.c: Added the internalcall for
25372         System.Threading.Thread::Start_internal
25373
25374         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
25375
25376 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
25377
25378         * loader.c: work around the different signatures for delegates
25379         constructors csc generates in compiled code vs the ones compiled in mscorlib.
25380
25381 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
25382
25383         * class.h, class.c: add mono_class_get_field_from_name ().
25384         * *: Fix C comments and other ANSI C issues.
25385
25386 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
25387
25388         * endian.h, assembly.c: fix some endianness issues.
25389
25390 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
25391
25392         * loader.h, load.c: add delegate_class to mono_defaults.
25393         Handle runtime provided methods in mono_get_method ().
25394
25395 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
25396
25397         * loader.c (mono_get_method): use pinvoke for internal call
25398
25399         * icall.c: use pinvoke for internal call
25400
25401         * loader.c (method_from_memberref): set the method name
25402
25403 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
25404
25405         * metadata.c: help the compiler generate better code for
25406         mono_class_from_mono_type ().
25407
25408 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
25409
25410         * class.c (mono_class_metadata_init): delayed computing of the
25411         class size to mono_class_metadata_init ()
25412
25413 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
25414
25415         * class.c, class.h: add an interfaces member to MonoClass.
25416         * image.c, image.h: add assembly_name field to MonoImage
25417         from the assembly table.
25418         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
25419
25420 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
25421
25422         * class.c: Handle Array in mono_class_from_mono_type ().
25423         * metadata.c, pedump.c: some endian fixes.
25424
25425 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
25426
25427         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
25428         * metadata.c: fix small problem introduced with the latest commit.
25429
25430 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
25431
25432         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
25433         We don't need a MonoMetadata pointer anymore to compare signatures in
25434         mono_metadata_signature_equal (), update callers.
25435         Reduced memory usage an number of allocations for MonoMethodHeader and
25436         MonoMethodSignature.
25437
25438 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
25439
25440         * metadata.c: added compare for szarray.
25441
25442 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
25443
25444         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
25445         and add a couple more types to it and mono_defaults. Give an hint on
25446         classes that need implementing in our corlib and are referenced
25447         in mscorlib.
25448
25449 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
25450
25451         * class.h, class.c: keep track if a class is also an Enum.
25452         * loader.c: Implement a couple more types for use in libffi
25453         marshalling. Gives better diagnostics when failing to dlopen
25454         a library. Set method->klass for P/Invoke methods, too.
25455
25456 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
25457
25458         * class.c, class.h: add a MonoType this_arg to MonoClass that
25459         represents a pointer to an object of the class' type that
25460         can be used by the interpreter and later the type cache.
25461         Add best guess alignment info for valuetype objects.
25462
25463 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
25464
25465         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
25466         into MonoType: one less level of indirection and allocation and
25467         simplifies quite a bit of code. Added cache for MonoTypes that are
25468         used frequently, so that we don't need to allocate them all the time.
25469
25470 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
25471
25472         * class.c (mono_class_create_from_typedef): System.Enum is also a
25473         value type, although it does not derive from System.ValueType
25474         (maybe a bug in the ms compiler?)
25475
25476         * metadata.c (mono_type_size): return the right size for value types
25477
25478         * loader.c (mono_get_method): only initialize method header if not abstract
25479
25480         * class.c (mono_class_from_mono_type): use mono_default values. 
25481
25482 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
25483
25484         * *: use MonoClass pointers instead of <type_tokens>
25485         
25486         * class.h: new flag: metadata_inited.
25487
25488         * class.c (mono_class_metadata_init): impl.
25489         (mono_class_instance_size): impl.
25490         (mono_class_data_size): impl.
25491
25492 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
25493
25494         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
25495         MonoClass now has the name and name_space fields. 
25496         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
25497         mono_get_method () takes and optional MonoClass as argument.
25498         Removed mono_typedef_from_name() and added mono_class_token_from_name()
25499         instead that takes advantage of a map from class names to typedef
25500         tokens in MonoImage.
25501
25502 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
25503
25504         * metadata.c: zero is not a valid alignment boundary.
25505         Merge MONO_TYPE_VOID in default decoding code.
25506
25507 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
25508
25509         * image.h: merged MonoMetadata into MonoImage
25510
25511         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
25512         identify the type of elements.
25513
25514 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
25515
25516         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
25517         * cil-coff.h: split MonoMSDOSHeader and add size info.
25518         * image.c: add some consistency checks.
25519         * metadata.c: fix row size computation: one programmer
25520         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
25521         add explanation for the locator routine.
25522         Fix decoding of size in method header.
25523         
25524 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
25525
25526         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
25527         (g_concat_dir_and_file): Bring g_concat_dir_and_file
25528         function from gnome-libs.  This uses the right path separator
25529         based on the OS, and also works around a bug in some systems where
25530         a double slash is not allowed. 
25531         (default_assembly_name_resolver): Use g_concat_dir_and_file
25532         (mono_assembly_open): ditto.
25533
25534 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
25535
25536         * metadata.c (mono_metadata_signature_equal): impl.
25537
25538         * *: void is now a realy MonoType (instead of using NULL)
25539         
25540         * metadata.c (do_mono_metadata_parse_type): use
25541         mono_metadata_parse_type to parse void value.
25542
25543 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
25544
25545         * metadata.c, metadata.h: in the signature and method header store
25546         only the space required for holding the loca vars and incoming arguments.
25547
25548 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
25549
25550         * metadata.c (do_mono_metadata_parse_type): treat void like any
25551         other type (instead of assigning NULL);
25552
25553 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
25554
25555         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
25556
25557 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
25558
25559         * image.c (do_mono_image_open): added a cache for arrays.
25560
25561 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
25562
25563         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
25564         decode a single column from a row in a metadata table and changes
25565         to take advantage of it in the typedef locator (gives a nice speed up).
25566         Store offset info for function params.
25567
25568 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
25569
25570         * image.h (MONO_IMAGE_IS_CORLIB): removed 
25571
25572 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
25573
25574         * assembly.c: how could mono_assembly_close () had ever worked?
25575         * metadata.c, metadata.h: provide offset info for local vars.
25576         Implement mono_type_size () to take care of alignment as well
25577         as size (it was mono_field_type_size in cli/class.c before).
25578
25579 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
25580
25581         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
25582
25583         * assembly.h (CORLIB_NAME): set to corlib.dll
25584
25585         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
25586
25587 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
25588
25589         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
25590         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
25591         tokentype.h: massive namespace cleanup.
25592
25593 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
25594
25595         * metadata.h, metadata.c: decode exception clauses when parsing method header.
25596
25597 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
25598
25599         * metadata.c (mono_metadata_free_type): added check for type !=
25600         NULL (void) before calling mono_metadata_free_type()
25601
25602 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
25603
25604         * metadata.h, row_indexes.h: added header with enumerations to use
25605         to index in the columns from tables in metadata and to decode coded
25606         tokens: we should start using this instead of embedding magic numbers
25607         all over the code.
25608
25609 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
25610
25611         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
25612         Move metadata_t info from cli_image_info_t to MonoImage, where
25613         it's easily accessible. Changed all the uses accordingly.
25614         Added the method and class caches to MonoImage.
25615         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
25616         and mono_metadata_decode_value () signature to be more consistent
25617         with the other parse functions (and simplify code). Taken advantage
25618         of zero-length array allocation with GCC. Removed reduntant (and
25619         wrong) MonoFieldType struct and use MonoParam instead. Changed
25620         mono_metadata_parse_field_type () to use common code for parsing.
25621         Added mono_metadata_typedef_from_field () and
25622         mono_metadata_typedef_from_method () to lookup a typedef index from a
25623         field or method token.
25624         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
25625
25626 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
25627
25628         * metadata.c (mono_metadata_parse_field_type): Implement. 
25629         (do_mono_metadata_parse_type): Split engine from
25630         mono_metadata_parse_type, so that we can create smaller structures
25631         for things that just have one pointer to the MonoType (look at
25632         the MonoFieldType)
25633
25634 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
25635
25636         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
25637         as Jan Gray found out, it is incorrect. 
25638
25639 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
25640
25641         * assembly.c: Implement asssembly loading.  This loads an image
25642         and loads all the referenced assemblies.  Come to think of it, we
25643         could always do lazy loading of the assemblies. 
25644
25645         * image.c (mono_image_open): Keep loaded images in a hashtable.
25646
25647         * image.h (MonoImage): Add reference count.
25648
25649 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
25650
25651         * assembly.c (mono_assembly_open): Keep track of the file name in
25652         case the assembly has no ASSEMBLY table.
25653
25654         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
25655         from get.c here.
25656
25657 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
25658
25659         * metadata.c, metadata.h: decode local vars in method header
25660         parse function. Change callers accordingly.
25661
25662 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
25663
25664         * metadata.h, cil-coff.h: protect against multiple inclusion.
25665         Added some new structures to hold information decoded from metadata:
25666         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
25667         and relevant decoding/free functions.
25668         * metadata.c: implement decoding functions. Add warning for out of bounds
25669         index in mono_metadata_locate(). Implement mono_get_method () to retreive
25670         all the info about a method signature and invocation. Remove check on
25671         uninitialized local var in parse_mh() and fix memory leak.
25672
25673 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
25674
25675         * metadata.h: More macros.
25676
25677         * tokentype.h: New file.
25678
25679 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
25680
25681         * assembly.c: added a consistency check and initialize
25682         some structures with g_new0().
25683         * metadata.c: fixed a couple more bugs in table size computation
25684         and add other checks for out-of bound access to metadata.
25685
25686 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
25687
25688         * metatada.c: fix bugs computing table sizes. Spew a
25689         warning when index in string heap is out of bounds.
25690
25691 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
25692
25693         * metadata.h: Add a couple of macros to manipulate tokens. 
25694
25695 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
25696
25697         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
25698         cli_section_tables).
25699
25700 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
25701
25702         * metadata.c (mono_metadata_user_string): New function, provides
25703         access to the UserString heap. 
25704
25705 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
25706
25707         * metadata.c: Add inline documentation.
25708
25709 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
25710
25711         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
25712         files. 
25713
25714 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
25715
25716         * typeattr.h: New file, TypeAttribute flags. 
25717
25718 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
25719
25720         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
25721         mono_assembly_ensure_section): Section loading code.
25722         (load_section_tables): Load the sections.
25723
25724         * mono/metadata/metadata.c (mono_metadata_locate_token,
25725         mono_metadata_locate): Functions to locate the information
25726         definition given a token or a table and an index.
25727         (mono_metadata_compute_table_bases): New.
25728         (compute_size): New function to compute the sizes of the various
25729         tables.
25730
25731         * mono/metadata/metadata.h: Finish listing the different index
25732         types. 
25733
25734         * mono/metadata/pedump.c: Improve to dump new information.
25735
25736 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
25737
25738         * mono/metadata/metadata.c: Entered all the tables matching
25739         Beta2. 
25740
25741         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
25742
25743
25744