750a71048706e45db0b0c14165b4995363390e89
[mono.git] / mono / metadata / ChangeLog
1 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
4
5         * object-internals.h: Add MonoReflectionArrayType and
6         mono_reflection_create_unmanaged_type.
7
8         * reflection.c: Implement support for ArrayType.
9
10 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
11
12         * metadata-verify.c (is_valid_method_header): Parse EH block
13         flags correctly.
14
15 2009-07-03  Mark Probst  <mark.probst@gmail.com>
16
17         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
18         processing the disappearing links, and process disappearing links
19         in a loop until no new objects are copied.
20
21 2009-07-03  Mark Probst  <mark.probst@gmail.com>
22
23         * object.c (handle_enum): Invoke the write barrier when copying
24         value type instances.
25
26         * sgen-gc.c: Register remsets for unmanaged write barriers only
27         when the address written to is actually on the heap.  This makes
28         set_value() in object.c work without requiring that the result be
29         on the heap.
30
31 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
32
33         The runtime wrappers are all bound to a given type that must
34         exist in the same image. For regular images we use the <Module>
35         type, which is required to exist for all images.
36
37         The <Module> type can't be used for dynamic images because it
38         might not exist at the time the wrapper is required, so we create
39         a synthetic type to use instead.
40
41         The current code works because of the 2 stage setup of MonoClass,
42         but once this is gone it will no longer work.
43
44         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
45
46         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
47
48         * object-internals.h: Export mono_image_set_wrappers_type icall
49         as part of the internal API.
50
51         * marshal.c (get_wrapper_target_class): If the image is dynamic,
52         use MonoDynamicImage::wrappers_type instead of the <Module> type.
53
54         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
55         image wrappers_type to the provided value.
56
57 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
58
59         * appdomain.c (deregister_reflection_info_roots): No need
60         to use the image lock here.
61
62 2009-07-02  Mark Probst  <mark.probst@gmail.com>
63
64         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
65
66 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
67
68         * threads.c: Store the thread start argument in a hash table instead of
69         registering it as a root, as libgc doesn't support unregistering roots
70         under windows, leading to 'too many root sets' errors when many threads
71         are created.
72
73         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
74         shutdown, they can still be referenced by the other dying objects.
75         Fixes #514506.
76
77 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
78
79         * socket-io.c: DontLinger does not allow LingerOptions.
80
81 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
82
83         * metadata-verify.c: The spec doesn't mention that it's possible to add
84         custom attribute to a generic parameter. Fixed.
85
86 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
87
88         * class.c (inflate_generic_type): Don't crash while trying to output a message
89         on why we're aborting.
90
91 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
92
93         * socket-io.c: DontLinger can take an int or a boolean too.
94
95 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
96
97         * gc.c: check for a null argument to SuppressFinalize () and
98         ReRegisterForFinalize ().
99
100 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * loader.c (method_from_methodspec): Call into the verifier to check
103         the signature.
104
105         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
106
107         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
108         part of the internal API.
109
110 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
113         the signature.
114
115         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
116
117         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
118         part of the internal API.
119
120 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
123         the signature.
124
125         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
126         blob verification.
127
128         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
129         part of the internal API.
130
131 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
132
133         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
134         when doing basic verification. 
135
136         This check must be done since the runtime peeks into signatures in much
137         more places than it does decoding so it makes sense to ensure that all
138         pointers to blob objects are well formed.
139
140 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
141
142         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
143         Use proper overflow dectection. Fix usage of it.
144
145 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
146
147         * loader.c (field_from_memberref): Call into the verifier to check
148         the signature.
149
150         * loader.c (mono_method_get_signature_full): Same.
151
152         * loader.c (method_from_memberref): Same.
153
154         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
155
156         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
157         part of the internal API.
158
159 2009-06-25  Mark Probst  <mark.probst@gmail.com>
160
161         * threadpool.c (mono_thread_pool_add): If the domain is unloading
162         or unloaded, still return an AsyncResult, but don't add it to the
163         threadpool.
164
165 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
166
167         * threads.c: fix missing colon when DEBUG is defined.
168
169 2009-06-25  Mark Probst  <mark.probst@gmail.com>
170
171         * threadpool.c: Don't add new calls to a threadpool if the domain
172         of the call is unloading or unloaded.  When dequeuing a job, null
173         the reference in the queue.
174
175 2009-06-25  Mark Probst  <mark.probst@gmail.com>
176
177         * sgen-gc.c (null_link_in_range): Add the dislink for the old
178         generation if an object was moved.
179
180 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
181
182         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
183           parameters of type SAFEARRAY[VARIANT].
184
185         * reflection.c (encode_marshal_blob): Properly generate element type
186           (SafeArraySubType marshal attribute option).
187
188         Code is contributed under MIT/X11 license.
189
190 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
191
192         * reflection.c: in mono_method_clear_object () really ensure all the
193         objects are removed.
194
195 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * loader.c (mono_method_signature): Call into the verifier to check
198         the method signature.
199
200         * metadata-verify.c (verify_method_table): Move signature verification
201         to verify_method_table_full.
202
203         * metadata-verify.c: Add mono_verifier_verify_method_signature.
204
205         * verify-internals.h: Export mono_verifier_verify_method_signature as
206         part of the internal API.
207
208 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
209
210         * loader.c (mono_method_get_header): Call into the verifier to
211         check the method header.
212
213         * metadata-verify.c: Add mono_verifier_verify_method_header.
214
215         * verify-internals.h: Export mono_verifier_verify_method_header as
216         part of the internal API.
217
218 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
219
220         * class.c (mono_class_find_enum_basetype): Call into the verifier to
221         check the field signature. Replace an assert with an explicit check.
222
223         * class.c (mono_class_setup_fields): Call into the verifier to check
224         the field signature.
225
226         * metadata-verify.c: Add mono_verifier_verify_field_signature.
227
228         * verify-internals.h: Export mono_verifier_verify_field_signature as
229         part of the internal API.
230
231 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
232
233         * class.c (mono_class_find_enum_basetype): Simplify this function
234         by moving code outside of the loop and not decoding static fields.
235
236 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
237
238         * metadata-verify.c (verify_typedef_table): Check the extends
239         token here. Move to here a flags check from verify_typedef_table_full.
240
241 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
242
243         * metadata-verify.c (is_valid_method_header): Fix a warning.
244
245         * metadata-internals.h (MonoImage): Remove the unused 
246         static_rgctx_invoke_wrapper_cache.
247
248         * image.c marshal.c: Ditto.
249
250 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
251
252         * image.c (do_mono_image_load): Enable table data verification.
253
254 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
255
256         * metadata-verify.c (is_valid_constant): Fix nullref check.
257
258 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * metadata-verify.c (is_valid_constant): Fix string bounds check.
261
262 2009-06-22  Mark Probst  <mark.probst@gmail.com>
263
264         * sgen-gc.c: Managed allocation with pthreads TLS.
265
266         * threads.c, threads-types.h: Functions for the JIT to tell the
267         runtime whether it supports the MONO_TLS opcode.
268
269 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
270
271         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
272         without methods.
273
274 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
275
276         * metadata-verify.c (is_valid_constant): Fix the string length check.
277         Use safe overflow checking. Add decent error messages.
278
279 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
280
281         * metadata-verify.c: Move remaininh blob checks to the offline
282         verification path.
283
284 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
285
286         * metadata-verify.c: Move more blob checks to the offline verification
287         path.
288
289 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
290
291         * object-internals.h : Adding interrupt_on_stop field.
292
293         * threads.c (mono_thread_request_interruption) : On Windows exit the
294           thread if interrupt_on_stop is set.
295
296         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
297          Removing old interrupt logic and setting the interrupt_on_stop for the
298          thread when calling accept.
299
300         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
301          setting the interrupt_on_stop for the thread when calling accept.
302
303         Contributed under MIT/X11 license.
304
305 2009-06-20  Martin Baulig  <martin@ximian.com>
306
307         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
308
309 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
310
311         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
312         running in no-exec mode.
313
314 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
315
316         * metadata-verify.c (verify_method_table): Move header
317         checking to verify_method_table_full.
318
319         * metata-verify.c (mono_verifier_verify_full_table_data):
320         Call verify_method_table_full.
321
322 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
323
324         * metadata-verify.c (verify_field_table): Move signature
325         checking to verify_field_table_full.
326
327         * metata-verify.c (mono_verifier_verify_full_table_data):
328         Call verify_field_table_full.
329
330 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
331
332         * metadata-verify.c (verify_typedef_table): Move remaining
333         stuff to verify_typedef_table_full.
334
335 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
336
337         * metadata-verify.c: Kill is_corlib from VerifyContext.
338         It is only used by the offline mode.
339         So we better remove it from the runtime path.
340
341 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
342
343         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
344         function that perform the offline metadata verification steps.
345
346         * metadata-verify.c (verify_typedef_table): Move some checks to
347         verify_typedef_table_full and make it been called by new function
348         mono_verifier_verify_full_table_data.
349
350         * pedump.c: Call mono_verifier_verify_full_table_data.
351
352         * verify-internals.h: Export mono_verifier_verify_full_table_data as
353         part of the internal API.
354
355 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
356
357         * metadata-verify.c (typedef_is_system_object): Fix System.Object
358         check.
359
360         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
361         flags bits. SupportLastError was confused as bit 7 instead of 6.
362
363         * metadata-verify.c (verify_implmap_table): Fix import scope verification
364         to check against the module ref table instead of module.
365
366         * metadata-verify.c (verify_implmap_table): Fix corlib check.
367
368         * pedump.c: Call mono_image_load_names.
369
370 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
371
372         * image.c: Extract mono_image_load_names from do_mono_image_load.
373
374         * metadata-internals.h: Export mono_image_load_names as part of
375         the internal API.
376         
377 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
378
379         * metadata.c (mono_metadata_cleanup): Free the generic method cache
380         first, as it could reference data in the other caches.
381
382 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
383
384         * metadata-verify.c: Finished with method header verification.
385
386 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
387
388         * metadata-verify.c: Added more header verification code.
389         Now only EH clauses are missing.
390
391 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
392
393         * marshal.c (get_runtime_invoke_type): Don't share primitive types
394         for return values.
395
396 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
397
398         * metadata-verify.c: Initial method header verification.
399
400 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
401
402         * metadata-verify.c (verify_import_table): The IAT contents
403         might end been patched by the windows DL when running with
404         coree enabled.
405
406 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
407
408         * class.c (mono_class_from_typeref): If the enclosing type is not
409         found return null instead of crashing. Fixes #508487.
410
411 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
412
413         * normalization-tables.h : updated to the latest unicode charcter
414           data.
415         * appdomain.c : bump corlib version.
416
417 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
418
419         * class.c (mono_class_from_name): Fix support for assembly references
420         in the EXPORTEDTYPE table. Fixes #511704.
421
422 2009-06-13  Geoff Norton  <gnorton@novell.com>
423
424         * domain.c: Ensure that mono_domain_assembly_open actually opens the
425         assembly in the target domain.
426
427 2009-06-12  Robert Jordan  <robertj@gmx.net>
428
429         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
430         because "this" of the managed signature has become an
431         ordinary parameter in the unmanaged signature.
432
433 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
434
435         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
436         field for owner-less generic containers.
437
438         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
439         image field of the owner-less generic containers created here.
440
441         * metadata.c (mono_metadata_load_generic_params): Ditto, the
442         contain is ownerless until the caller sets its owner.
443
444         * metadata.c (type_in_image): Handle owner-less generic containers
445         correctly.
446         
447 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
448
449         * image.c (mono_image_close): Support debug_assembly_unload for
450         dynamic images too.
451
452 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
453
454         * class.c: Fix some typos in comments.
455
456 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
457
458         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
459
460         * threads.c (mono_thread_execute_interruption): Avoid creating the
461         abort exception object while holding the synch_cs lock.
462
463 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
464
465         * metadata-verify.c: Verify basic cattr content.
466
467 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
468
469         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
470         nested types.
471         
472         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
473         support for nested types. Fixes #511704.
474
475 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
476
477         * metadata-verify.c: Verify methodspec signatures.
478
479 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
480
481         * metadata-verify.c: Verify typespec signatures.
482
483 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
484
485         * metadata.c (free_inflated_method): Call 
486         mono_marshal_free_inflated_wrappers (), which was missed earlier.
487
488 2009-06-08  Miguel de Icaza  <miguel@novell.com>
489
490         * mono-config.c: Small change to report the PPC64/ILP32 model.
491
492 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
493
494         * metadata-verify.c (parse_type): Check szarray.
495
496 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
497
498         * metadata-verify.c (parse_type): Check fnptr.
499
500 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * metadata-verify.c (parse_type): Check generic instances.
503
504 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
505
506         * metadata-verify.c (parse_type): Check array shape.
507
508 2009-06-05  Robert Jordan  <robertj@gmx.net>
509
510         * class.c (mono_class_create_from_typedef): Check only for
511         mscorlib's System.Array.
512
513 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
514
515         * metadata-verify.c (parse_type): Check pointer, class/valuetype
516         and generic params. 
517
518         * metadata-verify.c (parse_field): Check the signature.
519
520 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
521
522         * metadata-verify.c: Implement locals signature check.
523
524 2009-06-04  Marek Safar  <marek.safar@gmail.com>
525
526         * domain.c: Add .NET 4.0 Beta 1 version.
527
528 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
529
530         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
531           For QueryInterface on CCWs consider the base class
532           interfaces as well.
533
534         Code is contributed under MIT/X11 license.
535
536 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
537
538         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
539
540         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
541         used.
542
543         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
544         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
545
546         * generic-sharing.c (inflate_other_data): Ditto.
547         
548 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
549
550         * metadata-verify.c: Implement property signature check.
551
552 2009-06-04  Mark Probst  <mark.probst@gmail.com>
553
554         * sgen-gc.h: Register saving support for PPC.
555
556 2009-06-04  Mark Probst  <mark.probst@gmail.com>
557
558         * sgen-gc.c: Fixed a pthread TLS screwup.
559
560 2009-06-04  Mark Probst  <mark.probst@gmail.com>
561
562         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
563         supported.
564
565 2009-06-04  Mark Probst  <mark.probst@gmail.com>
566
567         * sgen-gc.c: Disable TLA and managed allocation if the __thread
568         keyword is not supported.
569
570 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
571
572         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
573         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
574         the inflated method is freed. Fixes #508389.
575
576         The code is contributed under the MIT/X11 license.
577         
578 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
579
580         * marshal.c (get_wrapper_target_class): New helper function.
581         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
582         the <Module> class of the image. Fixes #509049.
583
584 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
585
586         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
587         Check if the thread was interrupted and proccess it straight away.
588         Makes abortion much more responsive.
589
590 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
591
592         * threads.c (mono_thread_execute_interruption): Use atomic cas with
593         MonoThread::interruption_requested to match it's counterpart.
594
595         Fixes a hang in abort-stress-1 on a 2 core x86.
596
597         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
598         Fix warning.
599
600 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
601
602         Change MonoImage::name_cache to be protected by the image lock
603         instead of the loader lock.
604
605         * appdomain.c (deregister_reflection_info_roots): Protect access
606         to name_cache.
607
608         * class.c (mono_image_init_name_cache): Change from the loader lock
609         to the image lock. Check if the cache wasn't already created.
610
611         * class.c: Change from the loader to the image lock.
612
613         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
614         the code to hold the image lock while iterating over name_cache and
615         not go into mono_array_new holding it.
616
617         * metadata-internals.h: Add a comment about this change.
618
619 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
620
621         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
622         Under the 2.0 profile raise the loader error.
623
624         Fixes #508532.
625
626 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
627
628         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
629         of ldind opcode for generic instances so we don't fail for direct wrappers.
630         This only affect direct calls.
631
632 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
633
634         * reflection.c (create_dynamic_mono_image): Fix warnings.
635
636         * generic-sharing.c (other_info_equal): Ditto.
637         
638 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
639
640         * metadata-verify.c: Implement field signature check.
641
642 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
643
644         * metadata-verify.c: Implement standalone signature check.
645
646 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
647
648         * metadata-verify.c: Implement methodref signature check.
649
650 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
651
652         * object-internals.h (MonoRuntimeCallbacks): New structure containing
653         callbacks supplied by the runtime.
654
655         * object.c (mono_install_callbacks): New internal function to install
656         the callbacks.
657
658         * object.c (mono_create_ftnptr): Move the implementation of this to
659         mini/.
660
661         * object.c (mono_get_addr_from_ftnptr): Ditto.  
662
663 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
664
665         * metadata-verify.c (parse_return_type): Proper byref check.
666         * metadata-verify.c (is_valid_method_signature): Check for zero arity
667         generic signatures and method params.
668
669 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
670
671         * metadata-verify.c (decode_signature_header): Fix bounds check.
672
673         * metadata-verify.c (parse_custom_mods): Check custom mods.
674
675         * metadata-verify.c (parse_type): Do initial basic verification
676         of valid values.
677         
678         * metadata-verify.c (is_valid_method_signature): Parse the generic
679         param count.
680
681 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
682
683         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
684         discarded based on their most specific definition so we set the method_slots
685         array before checking if the method is acceptable or not.
686
687         Fixes #506757.
688
689 2009-05-26  Mark Probst  <mark.probst@gmail.com>
690
691         * icall.c: Free the old array when resizing a mono_ptr_array.
692
693 2009-05-26  Mark Probst  <mark.probst@gmail.com>
694
695         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
696         for the hashes whose keys are managed objects.
697
698 2009-05-26  Mark Probst  <mark.probst@gmail.com>
699
700         * object-internals.h, threads.c: Set the execution context on
701         thread start here, not in corlib.
702
703         * appdomain.c: Bump corlib version.
704
705 2009-05-27  Martin Baulig  <martin@ximian.com>
706
707         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
708         if `_mono_debug_using_mono_debugger' is set to make things work
709         properly when embedding Mono.
710
711 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
712
713         * class.c (mono_class_setup_fields): Don't mark simd types as having
714         16 bytes alignment as the whole runtime doesn't support.
715
716 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
717
718         * metadata-verify.c (safe_read): Use endian safe read macros.
719
720 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
721
722         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
723         it is read-only when using full aot.
724
725 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
726
727         * metadata-verify.c (is_valid_method_signature): Verify parts
728         of the return type. Provide an error message in case of failure.
729
730 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
731
732         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
733
734 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
735
736         * metadata-verify.c: Include the size prefix in the bounds check.
737
738 2009-05-22  Miguel de Icaza  <miguel@novell.com>
739
740         * icall.c: Remove warnings.
741
742         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
743         prevent auto-detection based on GCC defines.
744
745         Add PS3
746
747         * metadata-verify.c: Do not include signal.h
748
749         * generic-sharing.c, marshal.c: Add returns to avoid some warning
750         messages.  Not sure why the g_assert_not_reached is not enough to
751         quiet the compiler.
752         
753
754         * appdomain.c: Remove code that is not used when
755         DISABLE_SHADOW_COPY is set.
756
757         * image.c: use g_getenv
758
759 2009-05-21  Miguel de Icaza  <miguel@novell.com>
760
761         * reflection.c: Remove code that it not used with
762         DISABLE_REFLECTION_EMIT is defined.
763
764 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
765
766         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
767         invoke wrappers.
768
769 2009-05-20  Miguel de Icaza  <miguel@novell.com>
770
771         * socket-io.c
772         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
773         the ifdef here and instead put that on io-layer
774
775 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
776
777         * metadata-verify.c: Verify the generic param constraint table.
778
779 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
780
781         * metadata-verify.c (verify_generic_param_table): Fix
782         thinko on the valid flags bits for generic params.
783
784 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
785
786         * metadata-verify.c: Verify the methodspec table.
787
788 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
789
790         * metadata-verify.c: Verify the generic param table.
791
792 2009-05-19  Mark Probst  <mark.probst@gmail.com>
793
794         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
795
796 2009-05-19  Mark Probst  <mark.probst@gmail.com>
797
798         * sgen-gc.c: Use generation enum more consistently and use the
799         correct generation in mono_gc_register_for_finalization().
800
801 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * metadata-verify.c: Verify the nested class table.
804
805 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
806
807         * metadata-verify.c: Verify the manifest resource table.
808
809 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
810
811         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
812
813 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
814
815         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
816         wrappers, this is now done in the JIT.
817         
818         * class.c (mono_set_generic_sharing_supported): New internal function.
819         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
820
821 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
822
823         * metadata-verify.c: Verify the exported type table.
824
825 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
826
827         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
828
829 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
830
831         * metadata-verify.c: Verify the file table.
832
833 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * metadata-verify.c (verify_assembly_table): Fix an error message.
836
837         * metadata-verify.c: Verify the assemblyref table.
838
839 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
840
841         * metadata-verify.c (verify_assembly_table): Fix the valid
842         bits mask for flags.
843
844 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
845
846         * debug-helpers.c (mono_method_full_name): Print generic parameters of
847         generic methods as well.
848
849 2009-05-15  Geoff Norton  <gnorton@novell.com>
850
851         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
852         use-case and is significantly more performant than the wapi layer.
853
854 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
855
856         * metadata-verify.c: Verify the assembly table.
857
858 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
859
860         * metadata-verify.c: Fix rows limit check.
861
862 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
863
864         * metadata-verify.c: Verify the fieldrva table.
865
866 2009-05-13  Mark Probst  <mark.probst@gmail.com>
867
868         * sgen.c: Speed up weak links and finalizers by grouping them by
869         generation.
870
871 2009-05-13  Mark Probst  <mark.probst@gmail.com>
872
873         * marshal.c (delegate_hash_table_add): When overwriting an entry,
874         free the old GCHandle (only applies to SGen).
875
876 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
877
878         * loader.c (mono_get_method_from_token): Avoid the expensive call to
879         mono_metadata_load_generic_params () for non-generic methods.
880
881 2009-05-12  Mark Probst  <mark.probst@gmail.com>
882
883         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
884         New function for returning a monitor's weak link if it has one.
885
886         * sgen-gc.c: Remove an object's monitor's weak link (if it has
887         one) when clearing a domain.  These can still be around because
888         the object might not have been collected.
889
890 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
891
892         * gc.c: Fix a warning.
893
894 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
895
896         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
897         prevous wait that resulted in a deadlock on Windows when initializing
898         the runtime form DllMain. Also results in improved startup time.
899         (finalizer_thread): Get rid of thread_started_event.
900         * threads.c, threads-types.h (mono_thread_create_internal): Return the
901         resulting MonoThread.
902
903         Contributed under MIT/X11 license.
904
905 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * metadata-verify.c: Verify the implmap table.
908         Don't require that #US and #Strings be present.
909
910 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
911
912         * security-core-clr.c: Delegate checks are done at creation time,
913         not a invocation time. Fix exception for Telerik Silverlight demo
914
915 2009-05-11  Mark Probst  <mark.probst@gmail.com>
916
917         * sgen-gc.c (need_remove_object_for_domain): Remove the special
918         case for the Thread class.
919
920         * threads.c: Do clean-up of abort exception/state in
921         thread_cleanup() instead of Thread.free_internal().  Also clean up
922         current_appcontext.  The reason we have to do that is because
923         those references might point into another domain and if that
924         domain is unloaded before the thread is finalized, they point to
925         invalid data.
926
927 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
928
929         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
930         stub signatures.
931         
932         Contributed unter MIT/X11 license.
933
934 2009-05-09  Miguel de Icaza  <miguel@novell.com>
935
936         * verify.c, metadata-verifier.c: Add support for disabling the
937         verifier in some builds.
938
939         [ Sorry, my previous commit accidentally commited some work in
940         progress ]
941
942 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
943
944         * class.c (mono_class_setup_fields): Set class->field.first for
945         generic instances.
946
947 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
948
949         * metadata-verify.c: Verify the typespec table.
950
951 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
952
953         * metadata-verify.c: Verify the module table.
954
955 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
956
957         * metadata-verify.c: Verify the methodimpl table.
958
959 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
960
961         * metadata-verify.c: Verify the property table.
962
963 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
964
965         * debug-helpers.c (mono_method_desc_match): Add support for generic
966         glob patterns.
967
968 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * metadata-verify.c: Verify the propertymap table.
971
972 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
973
974         * metadata-verify.c: Verify the event table.
975
976         * metadata-verify.c (search_sorted_table): Fix offset
977         calculation.
978
979 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
980
981         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
982
983 2009-05-01  Mark Probst  <mark.probst@gmail.com>
984
985         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
986         because mono_delegate_free_ftnptr() needs it.
987
988 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
989
990         * metadata-verify.c: Verify the eventmap table.
991
992 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
993
994         * metadata-verify.c: Verify the standalonesig table.
995
996 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
997
998         * metadata-verify.c: Verify the field layout table.
999
1000 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1001
1002         * class.c (mono_type_get_name_recurse): Don't crash
1003         for ownerless generic params.
1004
1005         * debug-helpers.c (mono_type_get_desc): Correct the format
1006         for ownerless generic params.
1007
1008 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * metadata-verify.c: Verify the class layout table.
1011
1012 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
1013
1014         * metadata-verify.c: Verify the decl security table.
1015
1016 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1017
1018         * domain.c (mono_domain_set_internal_with_options): Don't do
1019         anything if the old domain is the same as the old one.  Fixes
1020         #499326.
1021
1022 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1023
1024         * appdomain.c: Deregister the reflection_info roots when unloading
1025         a domain.
1026
1027         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
1028         memory allocated by a domain and frees its disappearing links.
1029
1030         * boehm-gc.c, null-gc.c: Empty implementation of
1031         mono_gc_clear_domain().
1032
1033 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1034
1035         * appdomain.c (clear_cached_vtable): Free the static fields memory
1036         block.
1037
1038 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1039
1040         * gc.c: Set the correct domain when invoking finalizers.
1041
1042         * appdomain.c: Set the correct domain when creating threads.
1043
1044 2009-04-30  Mark Probst  <mark.probst@gmail.com>
1045
1046         * sgen-gc.c: Fix skip size for vectors.
1047
1048 2009-05-03  Martin Baulig  <martin@ximian.com>
1049
1050         * mono-debug-debugger.c
1051         (mono_debugger_check_breakpoints): Check class init handlers even
1052         if we don't have any method load handers.
1053
1054 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
1055
1056         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
1057         returning refonly assemblies if refonly is FALSE. Fixes #499013.
1058
1059 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061         * metadata-verify.c: Verify the field marshal table.
1062
1063 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
1064
1065         * metadata-verify.c: Verify the custom attribute table.
1066
1067 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1068
1069         * metadata-verify.c: Verify the constant table.
1070
1071 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1072
1073         * metadata-verify.c: Verify the memberef table.
1074
1075 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * metadata-verify.c (get_coded_index_token): Remove
1078         dead argument.
1079
1080 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1081
1082         * metadata-verify.c: Verify the interfaceimpl table.
1083
1084 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
1085
1086         * verify.c: Improve error message.
1087
1088         * debug-helpers.c (mono_type_get_desc): Harden the code that
1089         deals with VAR and MVAR.
1090
1091 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
1092
1093         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
1094         part of #498692.
1095
1096 2009-04-23 Tom Hindle <tom_hindle@sil.org>
1097
1098         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
1099         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
1100
1101 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
1102
1103         * security-core-clr.c: Avoid redundant checks for platform code, 
1104         e.g. check for method and for class (very common) and check
1105         for class and outer class (less common)...
1106
1107 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * reflection.c: Avoid returning random cattrs for synthetic methods.
1110         Fixes #498545.
1111
1112 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1113
1114         * assembly.c: assemblies in the GAC should never be shadow-copied.
1115
1116 2009-04-26  Mark Probst  <mark.probst@gmail.com>
1117
1118         * domain.c, domain-internals.h: Disable
1119         track_resurrection_{objects,handles}_hash in MonoDomain if using
1120         SGen.
1121
1122 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1123
1124         * metadata-verify.c: Verify the param table.
1125
1126 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1127
1128         * metadata-verify.c (verify_typedef_table): Range check FieldList and
1129         MethodList.
1130
1131         * metadata-verify.c (verify_method_table): Proper check the ParamList
1132         field.
1133
1134 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1135
1136         * metadata-verify.c (verify_method_table): Check for runtime
1137         implemented functions such as delegate .ctors. Remove spurious
1138         printf.
1139         
1140 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
1141
1142         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
1143
1144 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1145
1146         Don't allocate MonoGenericInfo for ownerless generic params.
1147         * class-internals.h (MonoGenericParam::info): Move field to ...
1148         (MonoGenericParamFull): ... this.  New struct.
1149         (MonoGenericContainer::type_params): Change type to
1150         MonoGenericParamFull.
1151         (MonoGenericParam, MonoGenericContainer): Update accessors.
1152         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
1153         'info' field for ownerless generic param.
1154         (mono_metadata_load_generic_params): Update to changes.
1155         * reflection.c (mono_reflection_create_generic_class): Likewise.
1156         (reflection_methodbuilder_to_mono_method): Likewise.
1157         (mono_reflection_initialize_generic_parameter): Likewise.
1158
1159 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1160
1161         Don't use MonoGenericParamInfo for ownerless generic params.
1162         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
1163         use ParamInfo class at all.
1164         (mono_class_from_generic_parameter): Use them.
1165         (make_generic_param_class): Fix a couple of instances where 'pinfo
1166         == NULL' wasn't handle.
1167
1168 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1169
1170         * class.c (make_generic_param_class): Carve out of ...
1171         (mono_class_from_generic_parameter): ... here.
1172
1173 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
1174
1175         Simplify mono_class_from_generic_parameter
1176         * class-internals.h (MonoGenericParamInfo::token): New field.
1177         * metadata.c (mono_metadata_load_generic_params): Initialize it
1178         from metadata.
1179         * class.c (mono_class_from_generic_parameter): Use it instead of
1180         searching through metadata.
1181
1182 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1183
1184         * metadata-verify.c: Add verification of the method table.
1185
1186 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
1189         Delegate::Invoke optimization.
1190
1191 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1192
1193         * appdomain.c (mono_domain_create_appdomain_internal): Free the
1194         string returned by get_shadow_assembly_location_base.
1195
1196         * appdomain.c (get_shadow_assembly_location_base): Add a comment
1197         about caller's ownership.
1198
1199 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
1200
1201         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
1202         reflection memory on domain unload.
1203
1204         * domain.c (mono_domain_free): Don't free refobject_hash, let the
1205         reflection cleanup code do it.
1206
1207         * domain-internals.h: Add mono_reflection_cleanup_domain.
1208
1209         This fixes a memory leak for managed mirrors of reflection objects
1210         on domain unload. 
1211
1212 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
1213
1214         * metadata-verify.c: Implement more verification of the field table.
1215
1216 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
1217
1218         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
1219         doesn't try to parse the input assembly, which can be broken.
1220
1221 2009-04-23  Mark Probst  <mark.probst@gmail.com>
1222
1223         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
1224         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
1225         by using the lowest bit in the link to store whether the link is
1226         tracked.  Move the track_resurrection hashes into boehm-gc.c.
1227
1228 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1229
1230         * Makefile.am: Split the console support in platform specific code
1231         and put together a framework for making this easy in the future so
1232         that we can start splitting code instead of having a mess of PLATFORM_WIN32
1233
1234 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
1235
1236         * pedump.c: Fix a warning.
1237
1238 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
1239
1240         * verify.c (mono_delegate_type_equal): Compare valuetypes using
1241         mono_class_from_mono_type to avoid bad interactions with the dual representation
1242         of the generic type definition.
1243
1244 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
1245
1246         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
1247         get the MonoClass for the call context type as it might be a generic
1248         instance.
1249
1250         Fixes #491483.
1251
1252 2009-04-21  Mark Probst  <mark.probst@gmail.com>
1253
1254         * object-internals.h: The Thread object has no execution_context
1255         member anymore.
1256
1257         * threads.c, threadpool.c, threads-types.h: Accessor functions for
1258         the execution context.
1259
1260         * appdomain.c: Bump corlib version.
1261
1262 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1263
1264         * verify.c (do_newobj): Improve error message.
1265
1266 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
1269         is nested in the filter block.
1270
1271         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
1272         block is not fully nested.
1273
1274         Fixes #495656.
1275
1276 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1277
1278         * verify.c (verify_type_compatibility_full): Compare MonoClass and
1279         not MonoType to check for equality of valuetypes as the generic type
1280         definition allows for two different encodings: the generic type definition
1281         class or a generic instance over the GTD arguments.
1282
1283         Fixes #496175.
1284
1285 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1286
1287         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
1288
1289         * verify.c (do_initobj): Improve error message.
1290
1291 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1292
1293         * metadata-verify.c: Enable pe verification as the issue with #496453
1294         is that the authenticode data directory have a different unspecified
1295         format. Ignore it for now.
1296
1297         * pedump.c: Run the metadata verifier together with the IL verifier.
1298
1299         Fixes ##496453.
1300
1301 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1302
1303         * metadata-verify.c: Temporarily disable pe verification due to #496453.
1304
1305 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
1306
1307         * class.c (can_access_type): Check visibility against
1308         the element type for pointers and arrays.
1309
1310         Fixes #496150.
1311
1312 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * metadata-verify.c: Fix cli and table verification to use information
1315         from the MonoImage. A lot of duplicated code got killed.
1316
1317 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
1318
1319
1320         This patch starts to integrate the metadata verifier with the runtime code.
1321
1322         This patch causes major regression in functionality for the metadata verifier
1323         as cli and table verification are disabled since they require to be ported to
1324         use MonoImage information.
1325
1326         * image.c (do_mono_image_load): Split the code in this function
1327         into mono_image_load_pe_data and mono_image_load_cli_data.
1328         Add     care_about_pecoff parameter to not load pecoff data.
1329         Call into the metadata verifier for pecoff and cli verification.
1330
1331         * image.c (mono_image_open_raw): New function that doesn't perform
1332         any parsing of the image contents.
1333         
1334         The reason for the 3 new functions is to give pedump better control
1335         into the interaction with the verifier.
1336
1337         * metadata-internals.h: Add new functions from image.c as part of the
1338         internal mono API.
1339
1340         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
1341         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
1342         to make those functions work together with the runtime.
1343
1344         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
1345         true if the image needs to be verified.
1346
1347         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
1348
1349         * pedump.c: Use new metadata verifier API.
1350
1351 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * object.c (mono_install_vtable_trampoline): Make this receive a
1354         trampoline creation function instead of trampoline, allowing the JIT
1355         to use a different trampoline for each vtable.
1356
1357 2009-04-18  Mark Probst  <mark.probst@gmail.com>
1358
1359         * object.c (mono_raise_exception): Don't reset the thread abort
1360         exception state here.
1361
1362 2009-04-18  Mark Probst  <mark.probst@gmail.com>
1363
1364         * icall-def.h: New icall for getting the thread abort exception
1365         state for a thread.
1366
1367         * object.c, thread.c, object-internals.h: A thread's abort
1368         exception state is now a GC handle.  To get the object it stands
1369         for, we must move it into the current app domain, if it's
1370         different than the one where it originated from.
1371
1372         * appdomain.c: Bump corlib version.
1373
1374         * domain.c, domain-internals.h: New function for setting the
1375         domain and migrate the thread abort exception or not.
1376
1377 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1378
1379         * metadata-verify.c: Add initial verification of the
1380         field table.
1381
1382 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1383
1384         * metadata-verify.c: Add a macro to conditionally enable
1385         dumping of verification information. Add  make_coded_token
1386         and search_sorted_table to enable search sorted tables
1387         by a given coded token.
1388
1389 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1390
1391         * metadata-verify.c: Add array mapping from table index
1392         to description offset. Add get_col_offset and get_col_size
1393         functions.
1394
1395 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1396
1397         * metadata-verify.c: Add remaining table descriptions offsets.
1398         Add remaining coded index descriptions.
1399
1400 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1401
1402         * metadata-verify.c: Fixed constant table description.
1403         Fixed calculation of HasCustomAttribute coded index size.
1404         Fixed calculation of size for many table indexes. 
1405
1406 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1407
1408         * pedump.c (dump_metadata): Dump table offset instead
1409         of useless pointer in memory.
1410
1411 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1412
1413         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
1414
1415 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1416
1417         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
1418         a missing of for interface types.
1419
1420 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1421
1422         * metadata-verify.c (verify_pe_optional_header): Add comment of why
1423         the code is commented.
1424
1425         * metadata-verify.c (verify_resources_table): Remove spurious printf
1426         and don't fail if there are unmanaged resources. Gmcs generates a useless
1427         one     for all assemblies - I bet it's some MS compatibility junk.
1428
1429 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1430
1431         * metadata-verify.c (verify_typedef_table): Verify the extends field.
1432
1433         * metadata-verify.c (mono_image_verify): Add a is_corlib.
1434
1435         * verify-internals.h: Same.
1436
1437         * pedump.c: Fix for mono_image_verify new signature.
1438
1439 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1440
1441         * metadata-verify.c (verify_typedef_table): Verify for some invalid
1442         flags combinations.
1443
1444 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1445
1446         * metadata-verify.c (verify_module_table): Ignore the generation field.
1447
1448 2009-04-15  Martin Baulig  <martin@ximian.com>
1449
1450         * debug-mono-symfile.c
1451         (mono_debug_symfile_lookup_location): Don't print a warning for
1452         unknown extended opcodes if they're within 0x40 and 0x7f.
1453
1454 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
1455
1456         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
1457         invoke signatures returning an enum. Fixes #494847.
1458
1459 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * metadata-verify.c: Initial code to verify the typedef table.
1462
1463 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * verify.c (mono_method_verify): Don't fail if an unconditional branch
1466         with non empty stack happens before the beginning of a try block.
1467
1468         Fixes #494812.
1469
1470 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * metadata-verify.c: Verify typename and typenamespace fields of
1473         the typeref table.
1474
1475 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1476
1477         * metadata-verify.c: Initial code to verify the typeref table.
1478
1479 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1480
1481         * verify.c (verify_delegate_compatibility): Fix error message.
1482
1483 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
1484
1485         * security-core-clr.c: Fix typo
1486
1487 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
1490         a MonoGHashTable to keep its values alive.
1491         (emit_marshal_boolean): Fix a warning.
1492
1493 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1494
1495         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
1496         not have any interface configured for IPv4/IPv6.
1497
1498 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1499
1500         * assembly.c: fix typo in error message.
1501
1502 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1503
1504         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
1505         allocating the location holding the this argument to prevent
1506         'too many root sets' errors.
1507
1508         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
1509         to mark fields as special static.
1510         (mono_field_static_get_value): Handle special static fields.
1511         (mono_field_static_set_value): Ditto.
1512
1513         * class-internals.h (struct _MonoClassField): Document this.
1514
1515 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
1516
1517         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
1518           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
1519           case.  This will handle when managed code returns null to native code.
1520
1521         Code is contributed under MIT/X11 license.
1522
1523 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
1524
1525         * object.c (build_imt_slots): Changing a free to a g_free to match
1526           the g_malloc0 in add_imt_builder_entry that allocated this memory.
1527
1528         Code is contributed under MIT/X11 license.
1529
1530 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
1531
1532         * marshal.c (emit_marshal_boolean): Adding code to ensure that
1533           the correct TRUE value is passed through the marshaling layer.
1534
1535         Code is contributed under MIT/X11 license.
1536
1537 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
1540         correctly. Fixes #492330.
1541         
1542         * marshal.c: Fix the embedding of object pointers into JITted code in
1543         the native-to-managed wrappers by allocating some GC tracked memory, and
1544         embedding the address of that.
1545
1546 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1547
1548         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
1549         pointers into the vtable.
1550
1551 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
1554
1555         * verify.c (verify_ldftn_delegate): Improve error message.
1556
1557 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
1558
1559         * reflection.c (my_mono_class_from_mono_type): Remove.
1560
1561 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
1562
1563         Prepare to reduce memory usage of owner-less generic parameters (1/n)
1564         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
1565         and constraints fields into ...
1566         (MonoGenericParamInfo): ... this.
1567         (mono_generic_param_info, mono_generic_container_get_param_info):
1568         New accessors.
1569         * class.c, debug-helpers.c, icall.c: Update to changes.
1570         * metadata.c, reflection.c, verify.c: Likewise.
1571
1572 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1573
1574         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
1575
1576         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
1577         
1578         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
1579         booleans with sbytes.
1580
1581 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1582
1583         * class.c (can_access_instantiation): Verify accesibility of element types
1584         for arrays and pointers.
1585
1586         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
1587
1588         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
1589
1590         Fixes #493068.
1591
1592 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1593
1594         * verify.c (do_invoke_method): Improve error messages.
1595
1596 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1597
1598         * verify.c:  Fixing the MSVC build.
1599
1600         Code is contributed under MIT/X11 license.
1601
1602 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
1603
1604         * security-core-clr.c: Simplify get_reflection_caller not to call
1605         mono_method_get_last_managed (another stack walk) and adjust the
1606         callers to handle a (should not happen) NULL return value.
1607
1608 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1609
1610         Add accessors to some MonoGenericParam fields
1611         * class-internals.h (mono_generic_param_owner): New accessor.
1612         (mono_generic_param_num): Likewise.
1613         (mono_type_get_generic_param_owner): New helper.
1614         (mono_type_get_generic_param_num): New helper.
1615         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
1616
1617 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1618
1619         * class-internals.h (mono_generic_container_get_param): New wrapper.
1620         * class.c, icall.c, metadata.c, verify.c: Use it.
1621
1622 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1623
1624         Fix gtest-252.cs
1625         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
1626         the standard case/loop.  In particular, don't complain about
1627         references to generic type definitions.
1628
1629 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * debug-helpers.c (dis_one): Decode string arguments.
1632
1633 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1634
1635         * pedump.c (dump_verify_info): Dump type name correctly.
1636
1637 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1638
1639         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
1640         are larger than code size.
1641
1642         This can happen in valid code if the try/catch block is not followed by any instruction
1643         and do a backward branch on the leave instruction.
1644
1645         Fixes #492494.
1646
1647 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
1648
1649         * security-core-clr.c: Fix typo while comparing second method names
1650         in can_avoid_corlib_reflection_delegate_optimization
1651
1652 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1653
1654         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
1655
1656         Fixes #487738.
1657
1658 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1659
1660         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
1661         a MVAR using a class context.
1662
1663         Fixes #490335.
1664
1665 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1666
1667         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
1668
1669         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
1670
1671         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
1672         functions supplied by the JIT for the SGEN GC.
1673
1674         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
1675         
1676 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1677
1678         monitor.c (mono_monitor_try_enter_internal):
1679         Added calls to profile monitor contentions.
1680         Also duplicated a small piece of code (the "get the monitor" logic)
1681         from the fast path to the slow path, and changed the relevant goto
1682         statements, so that monitor acquisition events can be emitted from the
1683         slow path (this is by Paolo Molaro).
1684
1685 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1686
1687         * profiler.c, profiler.h, profiler-private.h:
1688         Added support for profiling monitor contentions.
1689
1690 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1691
1692         * metadata-verify.c: Verify the modules table.
1693
1694 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
1697         using the context of the method been verifier and not of the method been called.
1698
1699         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
1700         safely inflate generic types. 
1701
1702 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
1703
1704         * security-core-clr.c: Change the strategy for checking the 
1705         "reflection using delegates optimization" to avoid unneeded 
1706         attributes in multiple class libraries.
1707
1708 2009-04-02  Mark Probst  <mark.probst@gmail.com>
1709
1710         * sgen-gc.c: Remove object element in the disappearing link struct
1711         by storing the object pointer in the link.
1712
1713 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1714
1715         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
1716
1717 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1718
1719         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
1720
1721         * verify.c (mono_method_verify): Do proper bounds checking of exception
1722         clause ranges.
1723
1724 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1725
1726         * loader.c (mono_field_from_token): Don't crash if the field parent could
1727         not be decoded.
1728
1729 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1730
1731         * sgen-gc.c: Execute critical finalizers after ordinary
1732         finalizers.
1733
1734         * class-internals.h, domain.c: Add CriticalFinalizerObject to
1735         mono_defaults.
1736
1737 2009-03-31 Jb Evain <jbevain@novell.com>
1738
1739         * verify.c (do_ldstr): don't check if a string is in the user strings
1740         heap if the current image is dynamic.
1741
1742 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1743
1744         * sgen-gc.c: Wait until the last finalizer has executed when
1745         returning from WaitForPendingFinalizers.
1746
1747 2009-03-31  Martin Baulig  <martin@ximian.com>
1748
1749         * mono-debug-debugger.h (MonoDebuggerEvent): Add
1750         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
1751         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
1752         (mono_debugger_event_create_appdomain): New function.
1753         (mono_debugger_event_unload_appdomain): New function.
1754
1755         * appdomain.c (mono_domain_create_appdomain_internal): Call
1756         mono_debugger_event_create_appdomain().
1757
1758 2009-03-31  Martin Baulig  <martin@ximian.com>
1759
1760         * mono-debug-debugger.c
1761         (mono_debugger_register_class_init_callback): Also register the
1762         class init callback if the class is already initialized to make
1763         things work with shadow copied assemblies.
1764
1765 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
1766
1767         * security-core-clr.c
1768         (mono_security_core_clr_ensure_reflection_access_field): Let 
1769         critical code access the field (just like we do for methods). Use
1770         check_field_access helper.
1771         (mono_security_core_clr_ensure_reflection_access_method): Use 
1772         check_field_access helper.
1773
1774 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1775
1776         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
1777         call the run-finalize function directly.
1778
1779         * gc.c, gc-internal.h: Make run_finalize() non-static.
1780
1781 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1782
1783         * sgen-gc.c: Use a separate struct for disappearing links.
1784
1785 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1786
1787         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
1788         * MaxIOVectorLength enabled, just ignore them.
1789         Fixes bug #349688.
1790
1791 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1792
1793         * metadata-verify.c: Fix eglib build.
1794
1795 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * threads-types.h: Fix the win32 build.
1798
1799 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
1800
1801         * class.c: move coreclr inheritance/override checks to 
1802         security-core.clr.c
1803         * security-core.clr.c|h: add code from class.c with additional
1804         documentation. Fix override check when the method is not critical.
1805
1806 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1807
1808         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
1809         (match_class): Ditto.
1810
1811 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1812
1813         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
1814
1815         * metadata-verify.c: Implement table layout row size calculation. Verify
1816         the total size of the tables.
1817
1818 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1819
1820         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
1821
1822 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1823
1824         * appdomain.c:
1825         * console-io.[ch]: added new mono_console_init() to make sure that
1826         file descriptors 0, 1 and 2 are opened.
1827         Bug #489019 fixed.
1828
1829 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
1830
1831         * appdomain.h: Export a new callback type and a new function to
1832         set this callback. This allow a mono host to provide it's own
1833         definition for "platform code".
1834         * metadata-internals.h: Add a core_clr_platform_code flag on 
1835         _MonoImage to (cache and) know if it is representing platform 
1836         code.
1837         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
1838         on platform code images.
1839         * security-core-clr.c|h 
1840         (mono_security_set_core_clr_platform_callback): Allow the host
1841         to provide it's own platform check definition.
1842         (mono_security_core_clr_determine_platform_image): Detect if an 
1843         image is platform code (using the specified callback).
1844         (mono_security_core_clr_is_platform_image): Return cached value 
1845         for platform code.
1846
1847 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * threads.c (mono_create_thread): New helper function to wrap CreateThread
1850         which has different parameter types for the 'tid' argument in windows and
1851         the io-layer.
1852
1853         * appdomain.c attach.c threads.c: Use the new helper.
1854
1855 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1856
1857         * metadata-verify.c: Verify valid table bits.
1858
1859 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1860
1861         * metadata-verify.c (verify_metadata_header): Store size in the size field.
1862
1863         * metadata-verify.c: Add initial table schema verification.
1864
1865 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1866
1867         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
1868         obtain the refclass argument needed by mono_param_get_objects (). Fixes
1869         #488383.
1870
1871         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
1872
1873         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
1874
1875 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
1876
1877         * security-core-clr.c: Add/update documentation
1878
1879 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1880
1881         * marshal.c (emit_marshal_object): Generate code to throw an exception
1882         instead of throwing it. Fixes #488670.
1883
1884 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
1885
1886         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
1887         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
1888         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1889         and add a call to mono_security_core_clr_ensure_delegate_creation
1890         to do the extra checks required by CoreCLR.
1891         * security-core-clr.c|h: Add function to check delegate creation,
1892         both in the binding and accessibility, under CoreCLR.
1893
1894 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1895
1896         * reflection.c (mono_reflection_create_dynamic_method): when 
1897         coreclr is enabled make sure that every resolved object are
1898         checked (e.g. field and method access).
1899         * security-core-clr.c|h: Add function to check objects resolved
1900         when a dynamic method is created.
1901
1902 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1903
1904         * metadata-verify.c: Cache directory rva translations.
1905
1906         * metadata-verify.c: Add cli-header and streams verification.
1907
1908 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1909
1910         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1911         the wrong offset (8 instead of 6).
1912
1913 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1916         methods, return the native function address itself. Fixes
1917         #487758.
1918
1919 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1920
1921         * console-io.c: some of the values for control characters might not be
1922         present.
1923
1924 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1925
1926         * exception.c|h: Add helpers to create [Field|Method]AccessException
1927         * icall.c: Add required coreclr check calls for field reflection.
1928         Move the existing (method) check logic into security-core-clr.c
1929         * security-core-clr.c: Add functions to check if the access of a
1930         field or method is allowed when reflecting under coreclr. This is
1931         mostly done using a stack walk to find the "real" caller: i.e. the
1932         code that is calling the reflection
1933
1934 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * gc-internal.h: Change location of gc_wrapper.h
1937
1938 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1939
1940         * class.c: Simplification to coreclr checks for overrides that
1941         makes it easier to set breakpoints.
1942
1943 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1944
1945         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1946         mono_security_core_clr_method_level): Avoid potential 
1947         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1948         user/application code) and make it easier to set breakpoints
1949
1950 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1951
1952         * metadata-verify.c: Reject cli header tables that mono don't handle.
1953
1954 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1955
1956         * pedump.c: Fix CLI header dumping.
1957
1958 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1959
1960         * metadata-verify.c: More CLI header verification.
1961
1962 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1965
1966 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1967
1968         * metadata-verify.c: Initial verification of the CLI header.
1969
1970 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1971
1972         * metadata-verify.c (verify_resources_table): Fix verification of zero
1973         sized resource section and id entries count.
1974
1975 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1978
1979 2009-03-17  Jb Evain  <jbevain@novell.com>
1980
1981         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1982
1983 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1986         (mono_gc_make_descr_for_array): Ditto.
1987
1988 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1989
1990         * verify.c (mono_verifier_is_class_full_trust): Add support for
1991         CoreCLR security mode where trusted assemblies are defined as
1992         "platform code".
1993
1994 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1995
1996         * metadata-verify.c: Add minimal PECOFF resource verification.
1997
1998 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1999
2000         * metadata-verify.c: Be less restrictive with some coff fields.
2001
2002 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2003
2004         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
2005         params as boxed values on stack. Fixes #485706.
2006
2007 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2008
2009         * console-io.c: the termios values may vary in different flavors of unix.
2010
2011 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
2012
2013         * console-io.[ch]: return the entire set of control characters when
2014         initializing the terminal.
2015         * appdomain.c: bump corlib version.
2016
2017 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
2018
2019         * mono-perfcounters.c: added support for in-process custom
2020         performance counters.
2021
2022 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
2023
2024         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
2025
2026 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
2027
2028         * metadata-verify.c: Verify the data pointed by the import table. 
2029
2030 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
2031
2032         * metadata-verify.c (load_data_directories): Store data
2033         directory contents.
2034
2035         * metadata-verify.c: Verify the import table. 
2036
2037 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         * metadata-verify.c: Verify data directories.
2040
2041 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2042
2043         * metadata-verify.c: Check section header flags.
2044
2045 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
2046
2047         * appdomain.c: if the assembly name is a shadow-copied file, return
2048         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
2049         in mono_make_shadow_copy.
2050         * icall.c: if the assembly name is a shadow-copied file, replace it
2051         with the original assembly path.
2052
2053         Bug #484244 fixed. NUnit tests for corlib can be run without
2054         --noshadow now.
2055
2056 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
2057
2058         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
2059         entries when the table is reallocated.
2060
2061         * icall.c: Allocate the memory used by the mono_ptr_array macros using
2062         mono_gc_alloc_fixed () since it contains GC refs.
2063
2064 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * reflection.c (ensure_complete_type): New helper function to call
2067         type resolve handlers for unfinished dynamic types.
2068         (resolve_object): Call it for MonoClassFields. Fixes #483852.
2069
2070 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
2073         #483247.
2074
2075 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
2076
2077         * appdomain.c (get_shadow_assembly_location): Fix memleak.
2078
2079 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
2080
2081         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
2082         between GCHandles of type WeakTrackResurrection and the objects they
2083         point to.
2084
2085         * gc.c: Partly implement the sematics of GCHandles of type 
2086         WeakTrackResurrection: these handles should only be cleared after the
2087         finalizer of the object they are pointing to has ran.
2088
2089 2009-03-06  Mark Probst  <mark.probst@gmail.com>
2090
2091         * icall.c: Partially revert r126631 because using the jump
2092         trampolines for generic shared methods makes it superfluous.
2093
2094 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * threads.c (handle_store): Create the 'threads' hash table with the proper
2097         MONO_HASH_VALUE_GC type.
2098
2099 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
2102         FIRST_GC_TRACKED.
2103
2104         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
2105         and LAST_GC_TRACKED as a GC root.
2106
2107         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
2108
2109         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
2110         the static data even if it consists of 1 reference.
2111
2112         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
2113         if there is a GC descriptor.
2114
2115         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
2116         instead of through the GC since they contain no object references.
2117
2118 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2119
2120         * generic-sharing.c (instantiate_other_info): Always return a jump
2121         trampoline for method code.
2122
2123 2009-03-05  Marek Habersack  <mhabersack@novell.com>
2124
2125         * culture-info-tables.h: generated to include the en-tt culture.
2126
2127 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
2128
2129         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
2130         capture the thread context.
2131
2132         * object.c (mono_async_result_new): Cache the invoke wrappers to
2133         ExecutionContext::Capture.
2134
2135 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * marshal.h: Add a prototype for what mono_compile_method returns
2138         for invoke wrappers.
2139
2140         * gc.c: Use the new prototype declaration.
2141
2142 2009-03-04  Geoff Norton  <gnorton@novell.com>
2143
2144         * boehm-gc.c: Add some MONO_LOG tracing for the GC
2145         * gc-internal.h:
2146         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
2147
2148 2009-03-04  Martin Baulig  <martin@ximian.com>
2149
2150         * mono-debug.h
2151         (mono_debugger_runtime_invoke): Removed.
2152
2153         * mono-debug-debugger.c
2154         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
2155
2156 2009-03-02  Martin Baulig  <martin@ximian.com>
2157
2158         * mono-debug.h
2159         (mono_debugger_unhandled_exception): Removed.
2160         (mono_debugger_handle_exception): Removed.
2161         (mono_debugger_throw_exception): Removed.
2162
2163         * mono-debug.c
2164         (mono_debug_debugger_version): Bump to 5.
2165
2166         * mono-debug-debugger.c: Moved the exception handling code to
2167         ../mini/debug-mini.c
2168
2169 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
2172         finalize_objects_hash.
2173
2174         * gc.c: Use the separate lock to access the finalize_objects_hash field.
2175         
2176         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
2177         field.
2178
2179         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
2180         cache.
2181
2182         * image.c (mono_image_close): Free it.
2183         
2184         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
2185         allowing a creation of a wrapper which invokes its method using a CALLVIRT
2186         on the this argument.
2187
2188         * gc.c (run_finalize): Optimize the calling of the finalizers.
2189
2190 2009-03-03  Martin Baulig  <martin@ximian.com>
2191
2192         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
2193         of the `MonoGenericInst' changes.
2194
2195 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2196
2197         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
2198         mono_array_class_get_cached to reduce locking contention. Extract
2199         a domain var.
2200
2201         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
2202         intermediary managed arrays. Use caching version of mono_array_new
2203         to allocate the result array.
2204
2205         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
2206
2207         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
2208
2209         * locales.c (create_names_array_idx):  Use mono_array_new_cached
2210         to reduce locking contention.
2211
2212 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2213                 
2214         * object.c (mono_method_add_generic_virtual_invocation): Put back the
2215         thunk builder code for the non-interface case.
2216
2217 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2218
2219         * object.c (get_generic_virtual_entries): New helper function to collect
2220         the virtual generic method instances which need to be added to an IMT
2221         thunk.
2222         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
2223         Instead of creating a new IMT thunk, reset the vtable slot to the
2224         trampoline, the thunk will be created the next time the trampoline is called.
2225         (build_imt_slots): Add support for virtual generic methods in interfaces by
2226         adding to the IMT thunk all the methods registered using 
2227         mono_method_add_generic_virtual_invocation ().
2228
2229         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
2230         (struct _MonoIMTCheckItem): Ditto.
2231
2232         * object.c (mono_method_add_generic_virtual_invocation): Take a
2233         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
2234         the IMT thunk to include all items.
2235         
2236         * object.c (mono_class_create_runtime_vtable): Add a missing
2237         mono_loader_unlock ().
2238
2239 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2240
2241         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2242
2243         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
2244
2245 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2246
2247         * object-internals.h: Rename _MonoReflectionEvent to
2248         MonoReflectionMonoEvent so it reflects the right managed type.
2249         Add a MonoReflectionEvent that correctly represents System.EventInfo.
2250
2251         * icall.c:
2252         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
2253         type.
2254
2255 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
2258         intermediary managed arrays. Use caching version of mono_array_new
2259         to allocate the result array.
2260
2261 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
2262
2263         * reflection.c: Use cached version of mono_array_new alongside
2264         the mono_reflection_get_custom_attrs_by_type call path.
2265
2266 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
2267
2268         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
2269         intermediary managed arrays. Use caching version of mono_array_new
2270         to allocate the result array.
2271
2272         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
2273
2274 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
2275
2276         * icall.c: Add small implementation of a growable stack bound array.
2277
2278         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
2279
2280         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
2281         intermediary managed arrays. Use caching version of mono_array_new
2282         to allocate the result array.
2283
2284 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
2285
2286         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
2287         helps Enum::CompareTo to be implemented without reboxing all enums
2288         to their underlying type.
2289 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
2292         since it acquires a global lock leading to scalability problems.
2293
2294         * profiler.c: Make the stat profiler work with multiple appdomains, this
2295         currently only works when no appdomains are unloaded.
2296
2297 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
2298
2299         * appdomain.c: make the check to avoid copying when the assembly is
2300         already shadow copied actually work.
2301
2302 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
2303
2304         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2305
2306         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
2307         changes to the managed side.
2308
2309 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
2310
2311         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
2312         classes + a separate lock for it, as it is used frequently at runtime, not
2313         just during metadata loading/JIT compilation.
2314
2315         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
2316         for szarrays.
2317         
2318         * object-internals.h (mono_class_from_name_cached): New macro to cache
2319         the results of the lookup locally without having to declare a static
2320         variable to hold it.
2321         (mono_class_get_field_from_name_cached): Ditto.
2322         (mono_array_class_get_cached): Ditto.
2323
2324         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
2325         the new macros.
2326         
2327         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
2328         slower search in metadata.
2329
2330         * pedump.c: Fix a warning.
2331
2332 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * reflection.c (encode_locals): Add checks for user types.
2335         (method_encode_clauses): Ditto.
2336         (method_encode_code): Ditto.
2337         (mono_image_create_token): Ditto.
2338
2339         * object-internals.h: Change the type of more fields from MonoReflectionType*
2340         to MonoObject*.
2341
2342 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
2345         the a thread does not suspend within 100ms.
2346
2347         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
2348         in addition to StopRequested as well.
2349
2350         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
2351
2352         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
2353         search the method_hash before inserting a new entry, to avoid crashes when
2354         the same method is inserted multiple times, causing the old 
2355         MonoDebugMethodInfo structure to be freed by the value dtor function.
2356
2357 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
2358
2359         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
2360         SO_EXLUSIVEADDRUSE where available.
2361
2362 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
2363
2364         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
2365         runtime invoke wrappers, this time it is string ctor wrappers, which
2366         pass a dummy string as 'this' instead of their obj argument. Fixes
2367         #478473.
2368
2369 2009-02-21  Jb Evain  <jbevain@novell.com>
2370
2371         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
2372         only get create_culture once.
2373
2374 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * reflection.c (mono_reflection_setup_internal_class): Move the user type
2377         check before the locking.
2378         
2379         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
2380         (mono_reflection_create_runtime_class): Ditto.
2381         (mono_reflection_sighelper_get_signature_local): Ditto.
2382         (mono_reflection_sighelper_get_signature_field): Ditto.
2383
2384         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
2385         is a System.MonoType object or similar.
2386         (monotype_cast): New helper function to cast a MonoObject to a 
2387         MonoReflectionType object.
2388
2389         * object-internals.h: Change MonoReflectionType* members in structures to
2390         MonoObject* members to force the usage of the monotype_cast () function.
2391
2392         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
2393         structures/arrays. This causes us to assert instead of crashing when 
2394         instances of user defined subclasses of System.Type are encountered.
2395
2396 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2397
2398         * cil-coff.h:
2399         * icall-def.h:
2400         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
2401         win32 resource loaded from a PE file.
2402
2403         * image.c: fix mono_image_lookup_resource.
2404
2405 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2406
2407         * icall-def.h:
2408         * threads-types.h:
2409         * threads.c: added internal call for WaitHandle.SignalAndWait.
2410
2411 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
2412
2413         * cominterop.c : Adding cominterop_type_from_handle and 
2414           registering it as an icall.  Replacing all references
2415           to type_from_handle.
2416
2417         Code is contributed under MIT/X11 license.
2418
2419 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * Makefile.am: Add lock-tracer.h and lock-trace.c.
2422
2423         * appdomain.c: Call the tracer init function.
2424
2425         * domain-internals.h: Enable the tracer for the domain locks.
2426
2427         * image.c: Enable the tracer for image locks.
2428
2429         * loader.c: Enable the trace for the loader lock.
2430
2431         * lock-tracer.h:
2432         * lock-tracer.c: Initial implementation of the lock trace utility.
2433         The tracer requires a compile time define to be enabled and a env var
2434         to be enabled at runtime.
2435
2436 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2437
2438         * domain.c (mono_domain_code_foreach): Improve documentation.
2439
2440 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * appdomain.c:
2443         * generic-sharing.c:
2444         * object.c:
2445         * reflection.c:  Adjust locking order to the new semantics where the loader lock
2446         comes first.
2447
2448 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2449
2450         * domain.c: Add mono_domain_code_* functions that perform locking
2451         around the domain codeman.
2452
2453         * domain-internals.h: Export those functions.
2454
2455         * object.c: Use new functions instead of acquiring the domain lock.
2456
2457 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
2460         delegate. Fixes #477396.
2461
2462 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2463
2464         * reflection.c (create_custom_attr): Get rid of alloca.
2465
2466 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
2467
2468         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
2469           Adding exception handling for all CCW calls.
2470
2471         Code is contributed under MIT/X11 license.
2472
2473 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
2476
2477         * marshal.c (emit_marshal_boolean): Add null checks to the new 
2478         native->managed marshalling code. Fixes #476247.
2479
2480 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * class.c (mono_class_get_vtable_entry): Move the addition of
2483         static rgctx invoke wrappers for vtable methods here, this simplifies
2484         a lot of code and causes fewer rgctx wrappers to be created.
2485
2486         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
2487         name of the statistics to begin with an uppercase.
2488
2489 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
2490
2491         * reflection.c: Revert previous change as it breaks the build.
2492         
2493 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
2494
2495         * verify.c: Properly handle SZARRAY element type.
2496
2497         Fixes #474271.
2498
2499 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
2500
2501         * reflection.c (mono_image_create_method_token): Correctly encode
2502         MethodDef MemberRefParent token.
2503
2504         Fixes #472845.
2505
2506 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * image.c (mono_image_close): Delete the critical section before
2509         freeing the memory holding it.
2510
2511 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2512
2513         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
2514         Fixes #476257.
2515
2516 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2517
2518         * pedump.c (main): Call mono_marshal_init so pedump
2519         doesn't crash.
2520
2521 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2522
2523         * loader.c (method_from_memberref): Properly fix #474271 and
2524         don't break the runtime bad.
2525
2526 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2527
2528         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
2529         (mono_domain_alloc0): Ditto.
2530
2531 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2532
2533         * loader.c (method_from_memberref): Don't abort if the array
2534         method is not found. A regular loader failure is more informative
2535         and correct.
2536
2537         Fixes #474271.
2538
2539 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2540
2541         *loader.c: Guard MonoImage::method_cache/methodref_cache
2542         using the image lock instead of the loader lock.
2543
2544         * metadata.h: Add comments about which fields are protected by
2545         the image lock.
2546
2547 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
2550
2551         * generic-sharing.c (mono_method_construct_object_context): Remove the
2552         wrapper_type == NONE assert, it is not needed.
2553
2554 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2555
2556         * reflection.c (clear_cached_object): New helper function.
2557         (mono_method_clear_object): New function to clear the cached reflection
2558         objects for a dynamic method.
2559
2560         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
2561         Partly fixes # 463323.
2562         
2563 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
2564
2565         * class.c:
2566         * loader.c:
2567         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
2568
2569 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
2570
2571         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
2572         take the image lock instead of the loader lock.
2573
2574         * metadata-internals.h: Export new functions.
2575
2576 2009-02-12  Miguel de Icaza  <miguel@novell.com>
2577
2578         * domain.c (app_config_parse): Remove another use of stat that is
2579         not necessary as g_file_get_contents already does the presence
2580         check. 
2581
2582 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
2583
2584         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
2585
2586         * marshal.c: Move the bstr handling code to cominterop.c.
2587
2588         * marshal.c: Remove some COM interop code missed previously.
2589
2590 2009-02-12  Miguel de Icaza  <miguel@novell.com>
2591
2592         More Paolo patches from the Wii port:
2593         
2594         * security.c: Remove ves_icall_System_Environment_get_UserName
2595         from here.
2596
2597         * icall.c: And put ves_icall_System_Environment_get_UserName
2598         here. 
2599
2600         * appdomain.c (mono_set_private_bin_path_from_config): Remove
2601         redundant call to stat that was only used to test for the file
2602         existence.   Patch from Paolo.
2603
2604         * gc.c (run_finalize): If COM is disabled, do not link in
2605         mono_marshal_free_ccw.
2606
2607         * generic-sharing.c: Use alloca.h here as well.
2608
2609 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
2610
2611         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
2612
2613 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
2614
2615         * cominterop.c cominterop.h: New files.
2616
2617         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
2618         function/typedefs which are needed by cominterop.c global.
2619
2620 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2621
2622         * generic-sharing.c: Don't take the loader lock to guard image
2623         mempool allocs.
2624
2625 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2626
2627         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
2628         called without the loader lock which is required to guard MonoImage:tokens.
2629
2630 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2631
2632         * class.c:
2633         * metadata.c:
2634         * method-builder.c:
2635         * marshal.c:
2636         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
2637
2638 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2639
2640         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
2641         Rework the code to use regular mono_image_alloc/0.
2642
2643         * loader.c: Rework the code to use regular mono_image_alloc/0.
2644
2645         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
2646
2647 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
2648
2649         * object-internals.h : Fixing a typo in the 
2650           MonoReflectionComVisibleAttribute struct.
2651
2652         * marshal.c (cominterop_com_visible): Check the implemented 
2653           interfaces for ComImport.
2654
2655         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
2656           assume that bools should be treated as VARIANTBOOLs.
2657
2658         * marshal.c (emit_marshal_boolean): Adding cases for 
2659           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
2660
2661         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
2662           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
2663
2664         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
2665           should be treated as VARIANTBOOLs.    
2666
2667         Code is contributed under MIT/X11 license.
2668
2669 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2670
2671         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
2672         allocation with the image lock.
2673
2674 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2675
2676         This patch is the last of a series to remove explicit reference of MonoImage::mempool
2677         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
2678
2679         * object.c: Add mono_string_to_utf8_image.
2680
2681         * object-internals.h: Export mono_string_to_utf8_image.
2682
2683         * reflection.c: Rework all explicit references to the the image mempool to go thought
2684         the mono_image_alloc set of functions.
2685
2686 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2687
2688         This patch is the third of a series to remove explicit reference of MonoImage::mempool
2689         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
2690         and generics-sharing.c.
2691
2692         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
2693         as first argument. Note that this function remains broken as it doesn't perform locking around the
2694         mempool allocation.
2695
2696         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
2697
2698         * image.c: Add g_slist_append_image.
2699
2700         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
2701         the supplied image for allocation. Move code into mono_metadata_field_info_full.
2702
2703         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
2704         Fix all related code to do the same.
2705
2706         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
2707
2708         * metadata-internals.h: Fix the signatures.
2709
2710 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2711
2712         This patch is the second of a series to remove explicit reference of MonoImage::mempool
2713         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
2714         and similar to work using MonoImage.
2715
2716         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
2717         MonoMemPool.
2718
2719         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
2720
2721         * class.c (mono_metadata_signature_deep_dup): Same.
2722
2723         * class.c (inflate_generic_type): Same.
2724
2725         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
2726
2727         * metadata.c (mono_metadata_signature_dup_full): Same.
2728
2729         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
2730         mono_metadata_signature_dup_full.
2731
2732         * metadata.c (mono_metadata_type_dup): Same.
2733
2734         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
2735
2736         * reflection.c: Same.
2737
2738         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
2739
2740         * metadata-internals.h: Fix the signatures.
2741
2742         * class-internals.h: Same.
2743
2744 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2745
2746         This patch is the first of a series to remove explicit reference of MonoImage::mempool
2747         and use mono_image_alloc set of functions instead. 
2748
2749         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
2750         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
2751         of a MonoMemPool.
2752
2753         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
2754
2755         * class.c (g_list_prepend_mempool): Removed.
2756
2757         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
2758
2759         * image.c: Add g_list_prepend_image.
2760
2761         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
2762
2763         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
2764
2765
2766 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2767
2768         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
2769         mono_image_unlock.
2770
2771         * image.c (mono_image_init): Init the lock field.
2772  
2773         * image.c (mono_image_init): Cleanup the lock field.
2774
2775         * image.c: Add mono_image_(un)lock functions.
2776
2777 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2778
2779         * class.c, class-internals.h: mono_method_get_context_general()
2780         combines the functionality of mono_method_get_context() and
2781         mini_method_get_context().
2782
2783         * generic-sharing.c, domain-internals.h:
2784         mono_method_construct_object_context() and
2785         mono_domain_lookup_shared_generic() moved from mini.
2786
2787         * icall.c (ves_icall_InternalInvoke): Handle the case where the
2788         method doesn't have the correct instantiation because it's shared
2789         generic code.  Fixes #473999.
2790
2791 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2792
2793         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
2794
2795         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
2796         
2797 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2798
2799         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
2800
2801         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
2802
2803         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
2804         and recheck the cache for dups after it.
2805
2806         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
2807
2808         Fixes one of the deadlocks found in #473150.
2809
2810 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
2811
2812         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
2813           For Win32, add additional break conditions for accept.
2814
2815         Code is contributed under MIT/X11 license.
2816
2817 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2818
2819         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
2820         lazily initialize the native wrapper cache.
2821         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
2822         cache, since they are different from the normal wrappers.
2823
2824         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
2825
2826         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
2827         AOT compiled native wrappers.
2828
2829 2009-02-09  Geoff Norton  <gnorton@novell.com>
2830
2831         * appdomain.h:
2832         * security-core-clr.c: Allow enabling core-clr from the embedding
2833         API.
2834
2835 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2836
2837         * socket-io.c: when requesting all the local ips, if there are no
2838         interfaces up and running, MS returns 127.0.0.1.
2839
2840 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2841
2842         * mono-perfcounters-def.h: processor time is an inverse time.
2843         Fixes bug #468625.
2844
2845 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2846
2847         * socket-io.c: an empty host name returns the list of local IPs.
2848         Fixes bug #386637 part 1/2.
2849
2850 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * verify.c (mono_class_interface_implements_interface): Call
2853         mono_class_setup_interfaces ().
2854         (merge_stacks): Ditto.
2855
2856 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * class.c (mono_class_setup_interfaces): New function to lazily initalize
2859         klass->interfaces.
2860         (mono_generic_class_get_class): Don't initalize klass->interfaces.
2861         (mono_generic_class_get_class): Ditto.
2862
2863 2009-02-06  U-QUACK\miguel  <miguel@quack>
2864
2865         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
2866         they live in security.c
2867
2868         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
2869         another bit from Paolo's code.
2870
2871 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * object.c (build_imt_slots): Add a small optimization to avoid inflating
2874         methods which will be discarded by add_imt_builder_entry ().
2875
2876         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
2877         need to be boxed.
2878
2879         * loader.c: Add a statistics for the size of the memberref signature cache.
2880         
2881         * loader.c (find_cached_memberref_sig): New helper function.
2882         (cache_memberref_sig): Ditto.
2883
2884         * loader.c: Cache the result of parsing memberref signatures, since otherwise
2885         they will be parsed again for every generic instantiation, leading to unbounded
2886         memory growth.
2887
2888 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2891         parameters of generic methods.
2892
2893         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2894         after the original method is copied to the inflated method.
2895         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2896
2897         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2898         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2899
2900         * class.c metadata.c: Update after the changes above.
2901
2902 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2903
2904         * metadata-verify.c: Simplified error handling and added
2905         section table validation.
2906
2907 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2908
2909         * class-internals.h (MonoClassExt): New structure containing rarely used
2910         fields of MonoClass.
2911         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2912         through a new 'ext' field.
2913
2914         * class.c (mono_class_alloc_ext): New helper function to allocate 
2915         class->ext.
2916
2917         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2918
2919 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2920
2921         * object.c (mono_object_get_virtual_method): Properly inflate
2922         generic methods.  Fixes #472692.
2923
2924 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2925
2926         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2927         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2928         for the parent type, the created type must be ready to be used on a generic
2929         instantiation.
2930         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2931         we won't have duplicated entries in generic_inst_cache.
2932
2933         Fixes #469553.
2934
2935 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2936
2937         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2938         replace with plain BSD per the comments on the bug MONO77637.
2939
2940 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * class.c (mono_class_get_generic_class): New accessor function.
2943         (mono_class_get_generic_container): Ditto.
2944
2945         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2946         fields, similar to the ones in MonoMethod.
2947
2948         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2949         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2950
2951         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2952         
2953         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2954         the same information as element_class->byval_arg.
2955
2956         * class.c reflection.c: Remove references to class->byval_arg.
2957
2958         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2959         klass->enum_basetype directly.
2960
2961         * verify.c metadata.c object.c icall.c reflection.c: Use 
2962         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2963         directly.
2964
2965 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2966
2967         * icall-def.h: Remove internal calls for sockets when
2968         DISABLE_SOCKET is defined, file system writing features when the
2969         OS only support reading and not writing data and Policy support if
2970         the Policy is disabled.
2971         
2972         * image.c (do_mono_image_open): Apply Paolo's patches for using
2973         mono_file_map_ APIs here.
2974
2975         * assembly.c: Add support for platforms to avoid prefix
2976         auto-detection. 
2977
2978 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2981         warning.
2982
2983         * class.c (mono_class_inflate_generic_class): New helper function.
2984
2985         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2986         statistics for inflated methods/classes.
2987
2988         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2989
2990         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2991         the call is made from Delegate.CreateDelegate () for the invoke method of
2992         a delegate.
2993
2994         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2995
2996         * metadata.c (mono_metadata_signature_size): New helper function.
2997
2998         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2999         generic instances.
3000
3001         * metadata.c (inflated_method_in_image): Avoid calling 
3002         mono_method_signature () if the method does not already have a signature.
3003
3004 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3005
3006         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
3007         valuetype is compatible with target type, check by inheritance as a
3008         VT is not really compatible with System.ValueType, for example.
3009
3010         * verify.c (do_invoke_method): Improve error message.
3011
3012         * verify.c (do_box_value): If boxing a nullable, use the type argument
3013         on stack instead.
3014
3015         * verify.c (do_newobj): Improve error message.  
3016
3017         Fixes #469549.
3018
3019 2009-02-03  Miguel de Icaza  <miguel@novell.com>
3020
3021         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
3022
3023 2009-02-03  Mark Probst  <mark.probst@gmail.com>
3024
3025         * generic-sharing.c: Don't hold domain lock when calling
3026         instantiate_other_info().  Fixes #471958.
3027
3028         * domain-internals.h, loader.c: Describe locking policy of domain
3029         lock vs loader lock.
3030
3031 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3032
3033         * verify.c (mono_delegate_signature_equal): Make it possible to check
3034         first-arg-bound delegates to static method.
3035
3036         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
3037         static methods with the first arg bound.
3038
3039         Fixes #469529.
3040
3041 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3042
3043         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
3044         errors.
3045
3046         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
3047         under strict mode. Any type, when boxed can be seen as a reference type.
3048
3049         Fixes #469528.
3050
3051 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
3052
3053         * object.h: The lower bound of an array is a signed integer value.
3054         Introduce mono_array_lower_bound_t typedef. It should be used instead of
3055         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
3056
3057         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
3058         calculate the upper bound.
3059         
3060         Fixes #471252.
3061
3062 2009-02-02  Miguel de Icaza  <miguel@novell.com>
3063
3064         From Paolo's work, refactored, cleared up:
3065         
3066         * threadpool.c, icall.c: ifdef code that requires a working socket
3067         stack.
3068
3069         * metadata.c (mono_metadata_field_info): Do not attempt to return
3070         a value from a function declared as void.
3071
3072         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
3073         from the console stack.
3074
3075         * assembly.c: use strrchr instead of rindex.
3076
3077         * class.c, object.c, marshal.c, icall.c, reflection.c: include
3078         alloca.h on systems that have it.
3079
3080         * environment.c: Avoid code that uses stuff from
3081         HAVE_SYS_UTSNAME_H
3082         
3083         * appdomain.c: Include sys/time.h.
3084
3085         * console-io.c: include sys/ioctl.h if it is available.
3086
3087 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
3090
3091         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
3092         the method builder.
3093
3094         * marshal.c: Set mb->skip_visibility instead of setting it on the method
3095         after it was created and cached, as the later is not thread safe.
3096         
3097 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
3100         called while the debugging module is not initialized. Fixes #471669.
3101
3102 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
3103
3104         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
3105
3106         Fixes #471255.
3107
3108 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3109
3110         * generic-sharing.c (lookup_or_register_other_info): Make sure the
3111         loader lock is not taken while the templates lock is held.  Fixes
3112         #471089.
3113
3114 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3115
3116         * metadata.c (type_in_image): Added a check to fix a monodis
3117         crash.
3118
3119 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3120
3121         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
3122         nullable arguments.
3123
3124         * object.c (mono_runtime_invoke_array): Ditto.
3125         
3126         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
3127         freeing wrappers of dynamic methods.
3128
3129         * loader.c (mono_free_method): Call it. Fixes #463323.
3130         
3131         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
3132         methods taking vtype/byref arguments, to fix yet another bug caused by
3133         the sharing of runtime invoke wrappers. Partly fixes #471259.
3134
3135 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * debug-mono-symfile.c (check_line): Return NULL instead of returning
3138         <first file in file table>:1 when the IL offset does not have an associated
3139         line number.
3140
3141 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * mono-debug.c (mono_debug_lookup_locals): New function to return local
3144         variable info for a method.
3145
3146         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
3147         
3148 2009-01-30  Jb Evain  <jbevain@novell.com>
3149
3150         * pedump.c: reuse code from monodis to make sure pedump honors
3151         MONO_PATH, which is needed to verify net_2_1 assemblies.
3152
3153 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
3156         there is no line number info.
3157
3158 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
3159
3160         Avoid some MonoType allocations
3161         * reflection.c (mono_reflection_initialize_generic_parameter):
3162         Reuse MonoType from param->pklass rather than allocating one.
3163         (mono_dynamic_image_free): Update to changes.
3164
3165 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
3166
3167         Rearrange some code to improve consistency
3168         * reflection.c (mono_reflection_setup_generic_class): Move body ...
3169         (mono_reflection_initialize_generic_parameter): ... here.
3170
3171 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
3174         with type constraints as an experiment.
3175
3176         * boehm-gc.c (on_gc_notification): Update mono_stats.
3177
3178 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
3179
3180         Avoid some allocations
3181         * class-internals.h (_MonoGenericInst::type_argv): Convert from
3182         pointer to tail array to avoid extra allocation.
3183         * metadata.c (free_generic_inst): Update to changes.
3184         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
3185         on-stack struct.
3186
3187 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
3188
3189         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
3190         return TRUE if the two type objects are the same.
3191
3192 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
3195         (mono_class_native_size): Use klass->marshal_info->min_align instead of
3196         klass->min_align, since klass->min_align contains the managed alignment,
3197         while the native alignment can be different, like for longs on x86.
3198         Fixes #469135.
3199
3200         * class-internals.h (MonoMarshalType): Add a min_align field.
3201
3202 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
3203
3204         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
3205         the 1.0 format.
3206
3207 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
3210         some comments about the usage of the used_regs field.
3211
3212         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
3213         Fixes #469217.
3214
3215 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
3216
3217         * appdomain.c: return NULL instead of throwing FileNotFoundException
3218         when LoadAssembly() fails.
3219
3220 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3221
3222         * metadata.c (mono_metadata_generic_param_equal): Only compare the
3223         image if the owner is NULL.  Fixes the AOT failures.
3224
3225 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3226
3227         * metadata.c (mono_metadata_load_generic_params): Initialize the 
3228         MonoGenericParam structure using memset so the image field is initialized
3229         as well.
3230
3231 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3232
3233         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
3234         a plain store.
3235
3236 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3237
3238         * class.c (mono_class_setup_vtable_general): In the generic instance
3239         optimization, set method->slot for abstract virtual methods. Fixes part of
3240         #467834.
3241
3242 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3243
3244         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
3245         which signals that the unloading has started but all appdomain services must
3246         remain operational.
3247
3248         * appdomain.c (mono_domain_unload): The initial state for unloading now
3249         is unloading_start and we switch to unloading after the managed call to
3250         AppDomain::DomainUnload has finished.
3251
3252         The new unloading state has to be created because managed code in the
3253         DomainUnload event can depend on things like the threadpool still working.
3254         The domain must remain fully functional while the event executes.
3255
3256         This shown as an issue due to Process::WaitForExit, which waits for
3257         async reads of stdout and stderr to complete. Since those are processed
3258         in the threadpool the code deadlocks because the DomainUnload callback 
3259         waits for the async read finished event, which should have been set by a
3260         threadpool job but has been discarded due to the domain been in unload
3261         state.
3262
3263 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3264
3265         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
3266         image must match.
3267
3268 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3269
3270         * reflection.c (resolve_object): For fields, inflate the class and
3271         then get the field in the inflated class.
3272
3273 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3274
3275         * object-internals.h (struct _MonoException): Added a comment
3276         explaining the new use of trace_ips.
3277
3278 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3279
3280         * generic-sharing.c (inflate_other_data): Inflate array methods
3281         correctly.
3282
3283         * loader.c, class-internals.h: Rename search_in_array_class() to
3284         mono_method_search_in_array_class() and make it non-static.
3285
3286 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
3287
3288         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
3289         Hopefully fixes #458168.
3290
3291 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
3292
3293         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
3294         as it is performed elsewhere.
3295
3296         Code is contributed under MIT/X11 license
3297
3298 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
3299
3300         * mono-perfcounters-def.h: Add counters for asp.net requests total and
3301         requests queued.
3302         * object.c (mono_raise_exception): Increment the exceptions total
3303         counter when an exception is thrown.
3304         * class-internals.h: Add a location for storing the total number of
3305         asp.net requests served.
3306         * mono-perfcounters.c: Implement update support for asp.net counters
3307         from the class libraries. Implement read support for asp.net counters
3308         and exceptions total counter.
3309
3310 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
3311
3312         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
3313         accessing klass->methods. Fixes #467385.
3314
3315 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
3318         for byval arguments without an [Out] attribute. Fixes #467212.
3319
3320         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
3321         Fix compilation under android.
3322         
3323         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
3324         processed, scan them directly after they are copied, to achieve better locality
3325         and cache usage.
3326
3327         * socket-io.c: Applied patch from Koushik Dutta
3328         (koush@koushikdutta.com). Disable IPV6 when running under android.
3329
3330 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
3331
3332         * icall.c (ves_icall_InternalExecute): Add write barriers.
3333
3334         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
3335         the GC code.
3336
3337         * sgen-gc.c: Implement write barriers in IL code.
3338
3339 2009-01-17  Geoff Norton  <gnorton@novell.com>
3340
3341         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
3342
3343 2009-01-17  Geoff Norton  <gnorton@novell.com>
3344
3345         * image.c: When unloading the image->references table, there can be gaps
3346         in it.  Ensure that we iterate every entry to avoid leaking assembly references
3347         when unloading an appdomain.
3348
3349 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
3350
3351         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
3352         speed up ptr-in-nursery checks.
3353
3354         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
3355         threads_lock () to prevent deadlocks.
3356
3357         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
3358         does not need to be scanned during minor collections, since writes to it
3359         must use write barriers.
3360
3361 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
3362
3363         * metadata-verify.c: Add pe nt header verification.
3364         
3365 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * gc.c: Fix a few warnings when using SGEN.
3368
3369 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
3370
3371         * metadata-verify.c: Add pe optional header verification.
3372
3373 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * sgen-gc.c: Add support for user defined marker functions, used by
3376         MonoGHashTable to avoid registering a GC root for every hash node.
3377
3378 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
3379
3380         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
3381         non-pinned roots into separate hashes to avoid having to traverse them
3382         in functions which are only interested in one kind.
3383
3384 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * metadata-verify.c: Add pe header machine field verification.
3387         
3388 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
3389
3390         * metadata-verify.c: Add pe header size verification.
3391
3392 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
3393
3394         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
3395         using the GC, they don't contain references.
3396
3397         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
3398
3399 2009-01-13  Geoff Norton  <gnorton@novell.com>
3400
3401         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
3402         AppDomains created on the native side can be cleaned up on the native side.
3403
3404 2009-01-13  Geoff Norton  <gnorton@novell.com>
3405
3406         * appdomain.c: Ensure that we call mono_context_init for the embedding api
3407         as well as the managed api.
3408
3409 2009-01-13  Geoff Norton  <gnorton@novell.com>
3410
3411         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
3412         with a MonoAppDomain initialized against it.
3413
3414 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3415
3416         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
3417         
3418         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
3419
3420         * marshal.c: Avoid setting the exception clauses after a method has been entered 
3421         into the wrapper caches. Fixes #465700.
3422
3423         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
3424         method builder.
3425         (mono_mb_create_method): Set the clauses from the method builder.
3426
3427 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
3428
3429         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
3430         Patch from Makoto Kishimoto.
3431
3432 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3433
3434         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
3435         encoding them as ROOT_DESC_COMPLEX.
3436         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
3437
3438 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
3439
3440         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
3441         no longer point to the nursery.
3442
3443         * sgen-gc.c: Add a few comments/FIXMEs.
3444         
3445         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
3446
3447         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
3448         initialization of the various _method variables thread safe. Fixes
3449         #465377.
3450
3451 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3452
3453         * domain.c, domain-internals.h: Remove the shared_generics_hash
3454         and its lookup functions.
3455
3456 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
3457
3458         * socket-io.c:  Fixing the MSVC build. 
3459
3460         Code is contributed under MIT/X11 license.
3461
3462 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
3463
3464         * metadata-verify.c: Add pe header watermark verification.
3465
3466 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
3467
3468         * metadata-verify.c: Add lfanew verification.
3469
3470 2009-01-12  Jb Evain  <jbevain@novell.com>
3471
3472         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
3473         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
3474
3475 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * socket-io.c: Fix the build.
3478
3479         * environment.c: Fix an #ifdef.
3480
3481 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3482
3483         * threadpool.c (async_invoke_thread): Handle the wait function returning
3484         WAIT_IO_COMPLETION as well.
3485         (async_invoke_io_thread): Ditto.
3486
3487 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
3488
3489         * threads.c: Fixing the Windows build.
3490
3491         Code is contributed under MIT/X11 license.
3492
3493 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3494  
3495         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
3496         interrupt a wait.
3497         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
3498         the thread to wait again.
3499
3500 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
3501
3502         * metadata-verify.c: Initial skeleton of the metadata verifier.
3503
3504         * pedump.c: Add support for the metadata verifier.
3505
3506         * verify-internal.h: Export the whole assembly metadata verifier function.
3507
3508 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
3509
3510         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
3511
3512 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * Makefile.am: Upgrade dtrace-prelink.sh location.
3515
3516 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
3517
3518         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
3519         well. Otherwise the shutdown deadlock that happens on unix will can happen
3520         as well.
3521         If the main thread code finishes too fast it's possible that the finalizer
3522         thread won't have executed yet, won't record itself as the finalizer thread
3523         and the shutdown sequence will wait on it forever.
3524
3525 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
3526
3527         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
3528         with MSVC.
3529
3530 2009-01-08  Miguel de Icaza  <miguel@novell.com>
3531
3532         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
3533         Robert Jordan for pointing this out.
3534
3535 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
3536
3537         * icall.c
3538         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
3539         ves_icall_System_IO_DriveInfo_GetDriveType.
3540
3541 2009-01-07  Miguel de Icaza  <miguel@novell.com>
3542
3543         * icall.c: Wrap calls to mono_strtod in CriticalSection
3544         invocations when using eglib, to work around #464316.
3545
3546 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
3547
3548         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
3549         return value of GetCurrentDirectory to never access unitialized memory.
3550
3551 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
3552
3553         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
3554         return value of GetCurrentDirectory and expand the buffer if needed.
3555
3556         Fixes #459094.
3557
3558 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
3559
3560         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
3561           Adding a call to mono_init_com_types.
3562
3563         Code is contributed under MIT/X11 license.
3564
3565 2009-01-07  Geoff Norton  <gnorton@novell.com>
3566
3567         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
3568         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
3569         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
3570         be the value of the ip buffer.
3571
3572 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3573
3574         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
3575         interfaces_packed here.
3576
3577         Fixes part of #463294.
3578
3579 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3580
3581         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
3582
3583         Fixes part of #463294.
3584
3585 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3586
3587         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
3588         is a boxed complex as well.
3589
3590         Fixes part of #463294.
3591
3592 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3593
3594         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
3595         control if a methodspec should be created for the generic method definition from external assemblies.
3596         Caching of methodspec is done using the handleref hash table.
3597
3598         Fixes #462592.
3599
3600 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
3601
3602         * loader.c (find_method): When searching the interfaces of a class
3603         check the transitive closure of implemented interfaces.
3604
3605         Fixes #463303.
3606
3607 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
3608
3609         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
3610         
3611 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
3612
3613         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
3614         interfaces calculation to fill_valuetype_array_derived_types.
3615
3616         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
3617         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
3618         for example.
3619
3620         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
3621         interfaces for valuetypes if needed.    
3622
3623         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
3624         for their basetype as well. Types are array expanded if rank is > 0.
3625
3626         Fixes #400716.
3627
3628 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
3629
3630         * socket-io.h : Changing the signature of
3631           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
3632           the blocking state.
3633
3634         * icall-def.h :  Changing the signature of
3635           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
3636
3637         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
3638           For Windows only.  Avoid blocking when calling accept by
3639           querying for a connection via select.  The loop also queries
3640           the thread state every 1000 micro seconds for the thread
3641           stop state.  This will avoid the process hanging on shutdown
3642           when using a TcpChannel that is never connected to.
3643
3644         Code is contributed under MIT/X11 license.
3645
3646 2008-12-30  Marek Safar  <marek.safar@gmail.com>
3647
3648         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
3649
3650 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3651
3652         * class.c (get_implicit_generic_array_interfaces): Extract common
3653         code to a helper function making it a lot easier on the eyes.
3654
3655 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3656
3657         * class.c (get_implicit_generic_array_interfaces): If the internal
3658         enumerator is an interface inflate System.Object instead of itself.
3659
3660         Fixes #461261.
3661
3662 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
3663
3664         * object.c (mono_runtime_invoke_array): Don't assert with
3665         byref nullable types.
3666
3667         * marshal.c (mono_marshal_get_runtime_invoke): To handle
3668         byref nullables we unbox the object and store it on the
3669         stack. 
3670         We can't use the boxed object since it is the T of Nullable<T>
3671         and the boxed representation of a nullable it's underlying type
3672         or null.
3673         We could cheat and create a boxed nullable and use the same
3674         machinery of other byref VTs but this feels like a hack and
3675         using the stack has the bonus of reducing heap pressure.
3676
3677         Fixes #461941.
3678
3679 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
3680
3681         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
3682         return value.
3683
3684         Fixes #461867.
3685
3686 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
3687
3688         * icall-def.h : Adding an internal call definition for 
3689           System.Environment.internalBroadcastSettingChange.
3690
3691         * icall.c : Adding a Windows only implementation to broadcast a 
3692           WM_SETTINGCHANGE when an environment variable has changed.
3693
3694         Code is contributed under MIT/X11 license.
3695
3696 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3697
3698         * class.c, class-internals.h: Made
3699         mono_class_has_parent_and_ignore_generics() non-static.
3700
3701 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
3702
3703         * image.c: deal with the mmap failing when loading an image.
3704
3705 2008-12-17  Geoff Norton  <gnorton@novell.com>
3706
3707         * threadpool.c: Ensure that the io_queue_lock is initialized
3708         in all circumstances, as we always attempt to cleanup against it.
3709
3710 2008-12-17  Miguel de Icaza  <miguel@novell.com>
3711
3712         * icall.c (ves_icall_System_Environment_get_Platform): For
3713         compatibility reasons for existing client code we will keep
3714         returning 4 for a while.   
3715
3716         For how long will depend on the documentation being updated, and
3717         for us to give client code a chance to be updated.
3718
3719         This reverts the original decison on #433108 since we did not
3720         catch roughly 33 instances of the broken code in our own source
3721         code base, we did not catch failures on the buildbots, and QA did
3722         not bring this as a problem.
3723
3724         Only today I found some customer's code breaking due to our own
3725         class libraries not being fully updated and tracked it down to
3726         this change.  I am reverting it because if we could not even get
3727         our story straight in our own code base, how can we hope that our
3728         end user code be fixed?
3729
3730         As of this morning, our Wiki page that documents how to detect
3731         Unix had not been fixed.    
3732
3733 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
3734
3735         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
3736
3737         * class.c (mono_class_get_fields): Handle loading errors.
3738
3739 2008-12-12 Mark Mason <mmason@upwardaccess.com>
3740
3741         * metadata.c (mono_type_stack_size_internal): If SIZEOF_REGISTER > SIZEOF_VOID_P then use SIZEOF_REGISTER as the size and alignment of the stack slots.
3742         
3743 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3744
3745         * mono-perfcounters.c: avoid warning.
3746
3747 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3748
3749         * reflection.c (ensure_runtime_vtable): Work on generic instances and
3750         make sure all interfaces have MonoClass::interface_id set.
3751
3752         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
3753         method table is property set.
3754
3755 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3756
3757         * class.c: New function mono_class_setup_interface_id that setup
3758         MonoClass::interface_id if needed.
3759
3760         * class-internals.h: Export new function.
3761
3762 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3763
3764         * class.c: Add code to sanity check the vtable after setup_vtable_general
3765         has done it's work.
3766
3767 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3768
3769         * icall.c: make Assembly.GetExecutingAssembly work properly when
3770         reflection is used to invoke the method.
3771         Bug #321781 fixed.
3772
3773 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3774
3775         * metadata/generic-sharing.c: Look for constraints in all type
3776         arguments, not just the first one.
3777
3778 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3779
3780         * appdomain.c: return the correct CodeBase for an Assembly instance
3781         that was loaded from the shadow-copy directories.
3782         Bug #458190 fixed.
3783
3784 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
3787
3788         * sgen-gc.c (check_object): New debugging helper function.
3789
3790         * object.c: Fix calls to mono_value_copy_array ().
3791
3792 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3793
3794         * class.c (mono_class_setup_fields): If working on an inflated class
3795         first check if the generic definition did init with success.
3796
3797         Fixes #445361.
3798
3799 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3800
3801         pedump.c (main): Fix a warning.
3802
3803 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
3804
3805         * object-internals.h : Adding a definition for 
3806           MonoReflectionComVisibleAttribute.
3807
3808         * marshal.c (cominterop_com_visible) :  Method added to check the 
3809           ComVisible attribute of a class.
3810
3811         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
3812           cominterop_raise_hr_exception added to consolidate common code 
3813           to raise hr exceptions.
3814
3815         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
3816           if a managed class should support IDispatch.
3817
3818         * marshal.c 
3819           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
3820           Added additional checks for managed object when getting 
3821           an IDispatch interface.
3822
3823         Code is contributed under MIT/X11 license.
3824
3825 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3826
3827         pedump.c (main): Handle mono_get_method () returning NULL. 
3828
3829 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3830
3831         * marshal.h: Fix a warning.
3832
3833 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3834
3835         * marshal.c : Adding cominterop_release_all_rcws to release all
3836           runtime callable wrappers held by the runtime.
3837
3838         * marshal.h : Adding declaration for cominterop_release_all_rcws.
3839           
3840         Code is contributed under MIT/X11 license.
3841
3842 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * metadata.c (mono_image_alloc_lock): New helper function.
3845         (mono_image_alloc0_lock): Ditto.
3846
3847         * metadata.c: Use the alloc_lock () helper functions for allocating
3848         memory from the image mempool.
3849
3850 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
3851
3852         * class.c (mono_class_from_generic_parameter): Document it's
3853         locking behavior. Fix double checked locking here, we stored in
3854         param->pklass a partially initialized MonoClass and no membar was used.
3855
3856 2008-12-05  Marek Habersack  <mhabersack@novell.com>
3857
3858         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
3859         (3) functions are present in the C library use them to do the
3860         job. If they are absent, make sure that the sum of int_part and
3861         dec_part is rounded before returning. This is necessary due to the
3862         division of dec_part by the power of 10 before the final addition
3863         is performed - if the result is not rounded in some cases it will
3864         yield invalid results.
3865
3866 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3867
3868         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
3869         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
3870         instruction instead of a pointer constant.
3871
3872 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3873
3874         * loader.c (mono_method_get_header): Do most of the work outside the
3875         loader lock, to avoid assembly load hook deadlocks.
3876
3877         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
3878         (mono_metadata_parse_type_full): Ditto.
3879
3880 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
3881
3882         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
3883         Make the stack depth fixed. Ensure proper argument passing to the backtrace
3884         funtions. Finally, use a lock to produce well ordered output.
3885
3886         The lock looks silly, as all calls to the corlib mempool should be guarded
3887         with the loader lock, but for some reason this fact doesn't help. 
3888
3889         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3890
3891 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3892
3893         * socket-io.c: 64 bit big-endian fixes.
3894
3895 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3896
3897         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3898         targets that require strict compatibility between the types.
3899
3900         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3901         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3902         Kill the strict argument and create a new one valuetype_must_be_boxed.
3903
3904         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3905         state that all valuetypes must be boxed.
3906
3907         Fixes #448560.
3908
3909 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
3910
3911         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3912         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3913
3914         Contributed under MIT/X11 license.
3915
3916 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3919         the inflate_generic_type machinery should handle it.
3920
3921         This avoids a crash when the field's flags is zero and it's type is
3922         a primitive.
3923         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3924         is zero and will return one of the cached built-in primitive types. Since
3925         those types live in read-only memory, the code that copies it crashes.  
3926
3927 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3928
3929         * object.c: Don't put function descriptors into generalized IMT
3930         thunks.
3931
3932 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3933
3934         * class.c: Enable generic code sharing on PPC64.
3935
3936 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3937
3938         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3939         from mini/mini.c.
3940
3941         * generic-sharing.c: Allocate the method template slists from the
3942         image mempool so it doesn't leak.
3943
3944 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3945
3946         * class.c (generic_array_methods): Release the linked list.
3947
3948 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3949
3950         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3951         invocation to g_utf16_to_utf8().
3952
3953 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3954
3955         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3956         arguments on big endian archs.
3957
3958 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3959
3960         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3961         the type name (test added in corlib).
3962
3963 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3964
3965         * pedump.c: initialize perf. counters. Fixes a segv.
3966
3967 2008-11-25  Martin Baulig  <martin@ximian.com>
3968
3969         * mono-debug-debugger.c
3970         (mono_debugger_runtime_invoke): Return the exception object if an
3971         exception was thrown.  Visual Studio displays the exception object
3972         in the locals window.
3973
3974 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3975
3976         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3977         ftnptr.
3978
3979 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3980
3981         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3982         MONO_TYPE_U are sizeof (gpointer), too.
3983
3984 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3985
3986         * marshal.c (mono_type_native_stack_size): Fixed size and
3987         alignment for reference types.
3988
3989 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3990
3991         * class.c (mono_class_generic_sharing_enabled): Disable generic
3992         code sharing for PPC64.
3993
3994 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3995
3996         * icall.c (mono_method_get_equivalent_method): Make sure
3997         method->klass->methods is inited before looping over it.
3998
3999 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
4000
4001         * object.c: when calling ExecuteAssembly in a newly created domain,
4002         the configuration file and application base are already set up.
4003         Bug #446353 take 2 fixed.
4004
4005 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
4006
4007         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
4008         Fixes #444715. Fix a warning.
4009
4010 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
4011
4012         * appdomain.c: write the full path of the assembly to the .ini file
4013         created when "shadow-copying"
4014         Bug #446353 fixed.
4015
4016 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
4019         if signature==FALSE.
4020
4021 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4022
4023         * marshal.h : Fix the cygwin build.
4024            marshal.c:12442: undefined reference to `_IID_IMarshal'
4025           
4026         Code is contributed under MIT/X11 license.
4027
4028 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4029
4030         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
4031           free threaded marshaler when QueryInterface is called on a COM callable
4032           wrapper requesting the IMarshal interface.
4033           
4034         Code is contributed under MIT/X11 license.
4035
4036 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
4039
4040         * reflection.c (mono_type_get_object): Special case the very common
4041         void type.
4042
4043         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
4044         hold typeof(void).
4045
4046 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
4047
4048         * process.h : Adding method declaration for
4049           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
4050           
4051         * process.c : Adding implementation for
4052           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
4053           
4054         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
4055           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
4056
4057         Code is contributed under MIT/X11 license.
4058
4059 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
4060
4061         * appdomain.c (unload_thread_main): Clean up threadpool by
4062         calling mono_thread_pool_remove_domain_jobs.
4063
4064         * domain-internals.h (struct _MonoDomain): Add new fields to
4065         help coordinate the cleanup of the threadpool.
4066
4067         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
4068         that cleans up the threadpool of all jobs associated with an appdomain.
4069         It does that by cleaning up the queues and making sure all active
4070         threads are accounted.
4071
4072         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
4073         unloaded or in the process of. Take this is such way that there is
4074         no race condition between another thread starting the unload and the
4075         current thread acknowledging it.
4076
4077         * threadpool.c (async_invoke_thread): Same.
4078
4079         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
4080         firing the new thread.
4081
4082         * threadpool.c (start_tpthread): Same.
4083
4084         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
4085
4086         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
4087
4088 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
4089
4090         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
4091         Add support for DuplicateHandle.
4092         
4093         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
4094         Add support for DuplicateHandle.
4095         
4096         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
4097         Add support for DuplicateHandle.
4098
4099         Code is contributed under MIT/X11 license.
4100
4101 2008-11-06  Mark Probst  <mark.probst@gmail.com>
4102
4103         * class-internals.h: Make min_align into a whole byte.
4104
4105         * class.c: Set min_align for SIMD types to 16.
4106
4107 2008-11-05  Geoff Norton  <gnorton@novell.com>
4108
4109         * attach.c: Default the attacher to enabled for all cases including
4110         embedded.
4111
4112 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4113
4114         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
4115         change r117650.
4116
4117 2008-11-04  Mark Probst  <mark.probst@gmail.com>
4118
4119         * monitor.c, monitor.h: New function for querying offsets of
4120         members of MonoThreadsSync.
4121
4122 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
4123
4124         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
4125         to speed up this function and to avoid the boundless memory growth caused by
4126         the signature_dup () calls.
4127
4128 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
4129
4130         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
4131         wrapper.
4132
4133         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
4134         by 1 bit.
4135
4136         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
4137
4138 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4139
4140         * appdomain.c:
4141         * domain-internals.h: made mono_set_private_bin_path_from_config()
4142         "internal".
4143         * object.c: call the above function after setting the configuration
4144         file path for the root domain.
4145         Fixes bug #314478.
4146
4147 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
4148
4149         * assembly.c: when the assembly is loaded from an absolute path, end
4150         basedir with a directory separator.
4151         Bug #440781 fixed.
4152
4153 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4154
4155         * monitor.c (mono_monitor_get_fast_enter_method): If
4156         CompareExchange is not available, don't create the fastpath
4157         instead of asserting.  (The method is missing in the 1.1 profile.)
4158
4159 2008-10-30  Mark Probst  <mark.probst@gmail.com>
4160
4161         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
4162
4163         * monitor.c, monitor.h: Code for generating Monitor.Enter and
4164         Monitor.Exit IL fastpaths.
4165
4166 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4167
4168         * class.c (mono_class_create_from_typedef): Added Vector2ul.
4169
4170 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
4171
4172         * class.c (mono_class_create_from_typedef): Added Vector2l.
4173
4174 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
4175
4176         * class.c (mono_class_create_from_typedef): Added Vector2d.
4177
4178 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
4179
4180         * appdomain.c: translate \ into / for cache_path.
4181         * domain-internals.h: new mono_is_shadow_copy_enabled().
4182         * icall.c: (fill_reflection_assembly_name) do the same path
4183         manipulations that get_code_base does.
4184         (get_code_base) use mono_is_shadow_copy_enabled.
4185
4186 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
4187
4188         * appdomain.c: shadow-copied assemblies go to CachePath +
4189         ApplicationName when both are set. DynamicBase has nothing to do with
4190         shadow copies.
4191         Bug #406877 fixed.
4192
4193 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
4194
4195         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
4196         STANDALONESIG table.
4197
4198         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
4199         standalone signatures.
4200
4201         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
4202         comparison code: instead of comparing the signatures using a custom
4203         equals function, transform them to a common signature and compare that. This
4204         works better with AOT.
4205
4206 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
4207
4208         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
4209
4210         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
4211         call for generic instances.
4212         (mono_class_setup_properties): Call setup_properties () before accessing
4213         gklass->properties.
4214
4215         * class.c (mono_class_get_virtual_methods): New helper function to iterate
4216         over the virtual methods of a class using metadata if possible, avoiding the
4217         creation of MonoMethod's for non-virtual methods.
4218         
4219         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
4220         get_virtual_methods () to iterate over the virtual methods of classes.
4221
4222 2008-10-25  Martin Baulig  <martin@ximian.com>
4223
4224         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
4225
4226 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4227
4228         * class.c (mono_class_create_from_typedef): Added Vector4i.
4229
4230 2008-10-24  Mark Probst  <mark.probst@gmail.com>
4231
4232         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
4233         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
4234         special-casing applies to eliminate the call completely.
4235
4236 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
4237
4238         * class.c (mono_class_create_from_typedef): Added Vector8s.
4239
4240 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
4241
4242         * class.c (mono_class_create_from_typedef): Added Vector16sb.
4243
4244 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4245
4246         * icall.c: get rid of annoying warning.
4247
4248 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
4249
4250         * threadpool.c: in 1.x, if you change the background status of the
4251         threadpool thread, it's not reset.
4252         Remove unnecessary calls to SetState.
4253
4254 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4255
4256         * threadpool.c: asynchronously create a set of idle threads upon first
4257         use of the threadpool. SetMinThreads will now start the appropriate
4258         number of idle threads if they are not already running. The default is
4259         1 threadpool thread per CPU. Increased the maximum number of threads
4260         per CPU to 10.
4261
4262 2008-10-22  Martin Baulig  <martin@ximian.com>
4263
4264         Revert r116521 from Zoltan, it breaks the debugger:
4265
4266         * class.c (mono_class_get_virtual_methods): New helper function to iterate
4267         over the virtual methods of a class using metadata if possible, avoiding the
4268         creation of MonoMethod's for non-virtual methods.
4269         
4270         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
4271         get_virtual_methods () to iterate over the virtual methods of classes.
4272
4273 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4274
4275         * threads.c: when creating a threadpool thread, set its state to
4276         'background'.
4277         * threadpool.c: reset the background state of a threadpool thread
4278         after finishing each work item
4279         Bug #437888 fixed.
4280
4281 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
4282
4283         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
4284         
4285         * class.c (mono_class_setup_vtable_general): Add an optimized version for
4286         generic instances which works by inflating the methods in the container
4287         class's vtable.
4288
4289         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
4290         variant which doesn't make a copy if no inflation was done.
4291         (mono_class_setup_fields): Use it.
4292
4293         * metadata.c (mono_metadata_get_shared_type): New helper function to
4294         return a shared instance of a given MonoType.
4295
4296         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
4297         a copy of most non-generic types.
4298
4299 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
4300
4301         * threadpool.c: remove one more GetSystemInfo () call.
4302
4303 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4304
4305         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
4306         use the code in mono-proclib.h to get processor information.
4307
4308 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4309
4310         * appdomain.c: fixed the logic that determines whether assemblies in a
4311         directory are "shadow-copied" or not. Bug #433483 fixed.
4312
4313 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
4316         warning.
4317
4318 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4319
4320         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
4321         returning a vtype.
4322
4323         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
4324         reflection.c: Use mono_field_get_name () for accessing a field's name.
4325
4326         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
4327         class.c
4328
4329         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
4330         field.
4331
4332         * loader.c (find_method_in_class): Reenable the metadata optimization by
4333         not using it for generic instances.
4334
4335         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
4336         data/def_type fields from MonoClassField into a separate structure.
4337         (struct MonoClassField): Remove data/def_type fields.
4338         (struct _MonoClass): Add a 'field_def_values' array to store the default
4339         values/RVA for fields.
4340
4341         * class.c reflection.c: Update after the changes.
4342         
4343         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
4344         for accessing field->data.
4345
4346         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
4347
4348         * loader.c (find_method_in_class): Revert the last change for now as
4349         it breaks Mono.C5 unit tests.
4350
4351         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
4352         'field_generic_types' and 'field_objects' which contain the information
4353         previously stored in MonoInflatedField.
4354         (MonoInflatedField): Delete.
4355         (struct _MonoClassField): Delete 'generic_info' field.
4356
4357         * reflection.c: Store the information which was previously in 
4358         field->generic_info in MonoDynamicGenericClass instead.
4359
4360         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
4361         MonoClassField changes.
4362
4363 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
4364
4365         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
4366         store the value inside the data array of the MonoMethodWrapper.
4367         This saves memory, is faster and fixes the lifetime issues (methods
4368         were never removed from the hash previously). May also fix bug#436996.
4369
4370 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
4373         generic instances, compute the type from the generic definition instead of
4374         looking in field->generic_info.
4375
4376         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
4377         for inflated fields, the only user was get_fieldref_token () which no
4378         longer needs it.
4379
4380         * class.c (mono_class_init): Revert the last change as it seems to cause
4381         crashes.
4382
4383         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
4384         bytes on 64 bit platforms.
4385
4386         * object.c (mono_class_create_runtime_vtable): Fix a warning.
4387         
4388         * object.c (mono_class_create_runtime_vtable): Don't initalize
4389         field->data/field->def_type here, it is done lazily by 
4390         mono_class_get_field_default_value ().
4391
4392         * icall.c (ves_icall_get_enum_info): Call 
4393         mono_class_get_field_default_value () instead of directly accessing
4394         field->data and field->def_type.
4395
4396         * object.c (get_default_field_value): Ditto.
4397
4398         * class.c (mono_field_get_data): Ditto.
4399         
4400         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
4401         call for generic instances.
4402
4403         * loader.c (find_method_in_class): If klass != from_class, then inflate
4404         the method with the context of from_class, since the caller assumes this.
4405
4406 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
4409         for accessing method->slot.
4410
4411 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
4412
4413         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
4414
4415 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * class.c (mono_method_get_vtable_index): Use
4418         mono_method_get_vtable_slot () for accessing method->slot.
4419
4420         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
4421         accessing klass->methods.
4422
4423         * class.c (mono_method_get_vtable_slot): New helper function.
4424         (mono_class_get_vtable_entry): Ditto.
4425         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
4426         accessing method->slot.
4427
4428         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
4429         method to get_inflated_method ().
4430
4431         * class.c (mono_class_get_inflated_method): New helper method to obtain
4432         a method of an inflated class without calling setup_methods ().
4433         (mono_class_get_cctor): Use get_inflated_method.
4434
4435         * generic-sharing.c (mono_class_get_method_generic): Ditto.
4436         
4437         * marshal.c image.c: Lazily create all the marshal caches.
4438
4439         * image.c (mono_image_init): Move initialization of runtime_invoke
4440         caches to marshal.c.
4441
4442         * marshal.c (get_cache): New helper function to lazily initialize a 
4443         wrapper cache.
4444         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
4445
4446         * debug-helpers.c (mono_method_full_name): Include generic arguments.
4447
4448 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
4449
4450         * loader.c: fixed check for interface type.
4451
4452 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4453
4454         * appdomain.c: check for NULL setup before it's referenced.
4455
4456 p
4457 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4458
4459         * class.c: remove the unused old vtable setup code.
4460
4461 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4462
4463         * class.c: don't depend on interface order in
4464         setup_interface_offsets (bug #435777).
4465         * reflection.c: sort the InterfaceImpl table (patch from
4466         Jb Evain  <jbevain@novell.com>).
4467
4468 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4469
4470         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
4471         the low level assemblies lock.
4472
4473 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
4474
4475         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
4476         object.c, reflection.c, socket-io.c, threads.c: introduced
4477         mono_framework_version () to return the major framewrok version,
4478         changed the code that was using more complex patterns to use it.
4479         Return the correct value for PlatformID for OSX.
4480
4481 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
4482
4483         * icall-def.h, process.h, process.c: added an icall to get info about
4484         processes using mono-proclib.
4485
4486 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
4487
4488         * mono-perfcounters.c: use the mono-proclib functions to
4489         access process information.
4490
4491 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4492
4493         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
4494         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
4495         reflection.c: remove rawbuffer usage: mmap support is more sanely
4496         provided by utils/mono-mmap.
4497
4498 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
4499
4500         * gc.c: use posix semaphores when possible so that
4501         mono_gc_finalize_notify() is signal safe.
4502
4503 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
4506         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
4507         be #ifdef-ed out, the linker will remove the rest.
4508
4509         * marshal.c: Implement DISABLE_COM.
4510
4511         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
4512
4513 2008-10-11  Miguel de Icaza  <miguel@novell.com>
4514
4515         * locales.c (string_invariant_compare_char): Optimization: do not
4516         call g_unichar_type unless we actually need the information.
4517
4518 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4519
4520         * object.c, class-internals.h: Also create remoting trampolines
4521         for generic methods.  Pass the domain to the remoting trampoline
4522         creation function, too.
4523
4524 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
4527
4528 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4529
4530         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
4531         Vector4ui.
4532
4533 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4534
4535         * assembly.c:
4536         * locales.c: remove the use of g_strdown. Fixes bug #322313.
4537
4538 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
4539
4540         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
4541         for the least possible amount of time (extending the fix in r113458).
4542
4543 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4544
4545         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
4546
4547 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4548
4549         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
4550         as possible simd intrinsic types.
4551         Optimized the test to check for the common prefix first.
4552
4553 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
4554
4555         * class.c: back out part of a broken optimization committed on
4556         May 23th (bug #433908).
4557
4558 2008-10-09  Mark Probst  <mark.probst@gmail.com>
4559
4560         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
4561         Win32.  Should fix #432388 for most cases until we have the new
4562         profiler on Win32.
4563
4564 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
4567         instead of using inst->id so the hash is stable for AOT.
4568
4569 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
4570
4571         * appdomain.c:
4572         * icall.c: create a .ini file for shadow-copied assemblies that
4573         contains the location of the original assembly. Use this to return the
4574         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
4575         Also fix the number of '/' for windows when returning the CodeBase.
4576         Fixes bug #430920.
4577
4578 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4579
4580         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
4581
4582         Code is contributed under MIT/X11 license.
4583
4584 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4585
4586         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
4587           if if the class vtable needs initialized.
4588
4589         Code is contributed under MIT/X11 license.
4590
4591 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4592
4593         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
4594           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
4595           STRING->BSTR, and CLASS->INTERFACE.
4596
4597         Code is contributed under MIT/X11 license.
4598
4599 2008-10-07  Marek Habersack  <mhabersack@novell.com>
4600
4601         * sysmath.h: changed the declaration of the
4602         ves_icall_System_Math_Round2 icall by adding an extra
4603         away_from_zero parameter.
4604
4605         * sysmath.c (ves_icall_System_Math_Round2): added support for
4606         away from zero rounding. The icall now takes an extra boolean
4607         parameter to signal that away from zero operation is requested.
4608
4609 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4610
4611         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
4612         the delegate klass so it can work with full-aot.
4613         (mono_marshal_get_delegate_end_invoke): Ditto.
4614         (mono_marshal_get_delegate_invoke): Ditto.
4615
4616 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
4617
4618         * gc.c, attach.h, attach.c: remove a bad pattern:
4619         add_finalizer_callback () is not implemented correctly, it can't
4620         without adding more overhead to the finalizer loop and it's not
4621         even needed, since we know exactly what we need to call, so there is
4622         no need to do so through an expensive function pointer.
4623
4624 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
4625
4626         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
4627         for the no-gc case.
4628         * attach.c (mono_attach_init): Remove the #ifdef.
4629
4630 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4631
4632         * attach.c (mono_attach_init): Don't use
4633         mono_gc_add_finalizer_thread_callback when compiling without GC.
4634         Fixes #432306.
4635         
4636         Code is contributed under MIT/X11 license.
4637
4638 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4639
4640         * class.c (mono_class_create_from_typedef): Remove the 
4641         #ifndef DISABLE_SIMD stuff.
4642
4643 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4644
4645         * class-internals.h (MonoClass): Added simd_type bit field.
4646
4647         * class.c (mono_class_create_from_typedef): Check if type is a simd
4648         intrinsic.
4649
4650 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4651
4652         * object.c (mono_method_add_generic_virtual_invocation): Only add
4653         instantiations to the thunk whose count is at least as large as
4654         the threshold.
4655
4656 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4657
4658         * icall.c: changed the Type of the exception thrown when trying to
4659         invoke a constructor on an abstract class. Part of the fix for bug
4660         #324185.
4661
4662 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4663
4664         * class.c, class-internals.h (mono_method_get_vtable_index): New
4665         function which returns the index into the vtable and properly
4666         handles inflated virtual generic methods.
4667
4668 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4669
4670         * object.c, domain.c, object-internals.h, domain-internals.h:
4671         Generalize IMT thunk machinery to also handle thunks for virtual
4672         generic method invokes.  When a virtual generic method is invoked
4673         more than a number of times we insert it into the thunk so that it
4674         can be called without lookup in unmanaged code.
4675
4676         * generic-sharing.c, class-internals.h: Fetching a
4677         MonoGenericInst* for a method from an (M)RGCTX.
4678
4679 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * marshal.c (emit_marshal_string): Applied a variant of a patch by
4682         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
4683         marshalling. Fixes #431304.
4684
4685 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
4686
4687         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4688           handle when ref is specified without In or Out.
4689
4690         Code is contributed under MIT/X11 license.
4691
4692 2008-09-30  Mark Probst  <mark.probst@gmail.com>
4693
4694         * loader.c (mono_get_method_constrained): Don't expand method with
4695         the class's context, because it's already a method of that class.
4696
4697 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
4698
4699         * attach.c : should be correct build fix.
4700
4701 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4702
4703         * attach.c: Fix the previous change.
4704
4705 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
4706
4707         * attach.c : quick w32 build fix.
4708
4709 2008-09-27  Miguel de Icaza  <miguel@novell.com>
4710
4711         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
4712         crashes MonoDevelop: #430455.
4713
4714 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * domain-internals.h (struct _MonoDomain): Move most fields used only by
4717         the JIT do MonoJitDomainInfo in ../mini/mini.h.
4718
4719         * domain.c: Remove initialization/cleanup of the removed fields.
4720
4721 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4722
4723         * class.c (mono_class_generic_sharing_enabled): Enable generic
4724         code sharing for PPC.
4725
4726 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
4727
4728         * attach.c : Fixing the Windows builds.
4729
4730         Code is contributed under MIT/X11 license.
4731
4732 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4733
4734         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
4735         the default generic sharing mode to 'all'.
4736
4737 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4738
4739         * generic-sharing.c, class-internals.h: New function for checking
4740         whether a method needs a static RGCTX invoke wrapper.  A few
4741         funtions moved from mini/generic-sharing.c.
4742
4743         * icall.c: New function used.
4744
4745 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4746
4747         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4748         Static RGCTX invoke wrapping applies to value type methods, too.
4749
4750         * class.c (mono_class_setup_vtable_general): In generic-shared
4751         value types, wrap methods with a static RGCTX invoke wrapper.
4752
4753 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
4756         osx build.
4757
4758 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4759
4760         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
4761         register a callback which is called when the finalizer thread is woken
4762         up.
4763         (finalizer_thread): Call the callback if it exists.
4764
4765         * attach.h attach.c: New files, implementing the attach mechanism.
4766
4767         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
4768         
4769         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
4770         by the previous change.
4771
4772 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4773
4774         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
4775         loader.c, marshal.c, metadata-internals.h, metadata.c,
4776         method-builder.c, object.c, reflection.c: introduced specific functions
4777         to allocate from the domain and image mempools and cleaned up most of
4778         the code to use them (still missing a few in reflection.c).
4779         Keep the loader bytes counter updated.
4780
4781 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
4782
4783         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
4784         loader-related counters.
4785
4786 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
4787
4788         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
4789         added more MS-compatible counters.
4790
4791 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4792
4793         * class.c (mono_class_setup_fields): Call setup_fields before accessing
4794         class->blittable. Fixes #428217.
4795
4796 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * reflection.c (mono_image_get_field_on_inst_token): Call 
4799         field_encode_signature () since that handles custom modifiers too.
4800         Fixes #424663.
4801
4802 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
4803
4804         * reflection.c (add_custom_modifiers): New helper function to merge custom
4805         modifiers stored in objects to a MonoType.
4806         (fieldref_encode_signature): Encode custom modifiers.
4807         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
4808         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
4809
4810 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
4811
4812         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
4813         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
4814         64-bit IL only images because imports are not resolved for IL only images.
4815         Special thanks to Bill Holmes for finding this bug and testing the patch.
4816         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
4817
4818         Contributed under MIT/X11 license.
4819
4820 2008-09-19  Miguel de Icaza  <miguel@novell.com>
4821
4822         * mono-config.c (dllmap_start): Add support for the bits keyword
4823         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
4824
4825 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4826
4827         * reflection.c (inflate_mono_method): When the class the method is
4828         to be inflated for is itself not inflated, just return the method.
4829
4830 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
4831
4832         * mono-perfcounters.c: use more user friendly process instance names.
4833
4834 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
4835
4836         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4837           handle "[in] ref" and "[in][out] ref" cases.
4838
4839         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
4840           to mono_mb_create_method.  This was causing problems calling native to
4841           managed passing Variants by value.
4842
4843         Code is contributed under MIT/X11 license.
4844
4845 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
4846
4847         * class.c (can_access_internals): Call mono_assembly_load_friends ()
4848         before accessing the friend_assembly_names field.
4849
4850         * assembly.c (mono_assembly_load_friends): Make this callable multiple
4851         times.
4852         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
4853         called lazily when it is needed.
4854
4855         * metadata-internals.h (struct _MonoAssembly): Add 
4856         'friend_assembly_names_inited' flag.
4857
4858 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
4859
4860         * mono-perfcounters-def.h: fix the types of a few counters.
4861         * mono-perfcounters.c: implemented the instance names getter
4862         and a few bugfixes.
4863
4864 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
4865
4866         * culture-info-table.h : regenerated.
4867
4868 2008-09-17  Robert Jordan  <robertj@gmx.net>
4869
4870         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
4871         context bound objects. Fixes #415577.
4872
4873         Code is contributed under MIT/X11 license.
4874
4875 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
4876
4877         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
4878         implementation (bug #423582).
4879
4880 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
4881
4882         * object.c (mono_object_get_virtual_method): Handle the case method->slot
4883         is not set. Fixes #426309.
4884
4885 2008-09-16  Jb Evain  <jbevain@novell.com>
4886
4887         * class.c (mono_class_from_name): fix the exported type look up
4888         when the type is defined in a referenced assembly.
4889
4890 2008-09-16  Jb Evain  <jbevain@novell.com>
4891
4892         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4893         increment the next index counter on each iteration to make that work
4894         for more than one type forwarder. Unmanaged part to fix #422929.
4895
4896 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4897
4898         * object-internals.h: enum ComInterfaceType in
4899         MonoInterfaceTypeAttribute is guint32, not guint16.
4900
4901 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4902
4903         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4904         writing code.
4905
4906 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4907
4908         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4909         not gboolean.
4910
4911 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4912
4913         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4914         Endianness fixes for MonoSymbolFileOffsetTable.
4915
4916 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4917
4918         * process.c (complete_path) : Removing quotes from the 
4919           input path.  The glib file routines do not handle file paths
4920           that have quotes around them.
4921
4922         Code is contributed under MIT/X11 license.
4923
4924 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4925
4926         * socket-io.h : Adding a comment to provide locations where 
4927           changes to MonoSocketAsyncResult need to be synced.
4928
4929         Code is contributed under MIT/X11 license.
4930
4931 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4934         parameters as well. Fixes #425001.
4935
4936 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4937
4938         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4939         windows build.
4940
4941 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4942
4943         * console-io.c: Add support for tracking the window size if it
4944         changes.
4945
4946         The setup is very simple: the TtySetup function will now return a
4947         pointer to a location in memory that tracks the current console
4948         size.  The managed code checks its current value every time its
4949         queried against the last value set, and updates accordingly.
4950
4951         With this setup we can work with multiple consoles, and we do not
4952         require to poke into managed code from a signal handler.
4953
4954         Additionally, the environment for COLUMNS and LINES is now handled
4955         in unmanaged code.
4956
4957         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4958
4959 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4960
4961         * marshal.c (mono_type_native_stack_size): Treat
4962         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4963
4964 2008-09-04  Jb Evain  <jbevain@novell.com>
4965
4966         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4967         to nullables.
4968
4969 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4970
4971         * verify.c (verify_type_compatibility_full): Revert change
4972         to allow converting a native int to unmanaged pointer be verifiable
4973         under non-strict mode.
4974         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4975
4976         * verify.c: Added some TODOs.
4977
4978 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4979
4980         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4981           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4982           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4983
4984         Code is contributed under MIT/X11 license.
4985
4986 2008-09-02  Jb Evain  <jbevain@novell.com>
4987
4988         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4989
4990 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4991
4992         reflection.c (typebuilder_setup_fields): Handle classes with
4993         explicit size.
4994
4995 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4996
4997         class.c (mono_class_setup_events): Add memory barrier due to
4998         double checked locking.
4999         
5000         class.c (mono_class_setup_properties): Same.
5001
5002 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
5003
5004         * class.c (mono_class_is_assignable_from): Fix the build.
5005         
5006         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
5007         before accessing klass->interface_bitmap. Fixes #421744.
5008
5009 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
5012         the runtime into no-exec mode, useful when running the AOT compiler.
5013
5014         * appdomain.c gc.c object.c: Avoid executing managed code when running
5015         in no-exec mode.
5016         
5017         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
5018
5019         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
5020         special case when the mono_assembly_loaded () returns NULL because the 
5021         search hook is not installed.
5022
5023 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
5026         crashes in bstr marshalling on linux.
5027
5028 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
5031         with more than one parameter.
5032
5033 2008-08-24  Miguel de Icaza  <miguel@novell.com>
5034
5035         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
5036         start/stop flow control as well when turning off ICANON (allows
5037         C-s and C-q to be read by Console.ReadKey).
5038
5039 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
5040
5041         * class.c (mono_class_init): Move the initialization of nested classes
5042         into mono_class_get_nested_types (). Fixes #418433.
5043
5044         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
5045         flag.
5046
5047         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
5048         iterating tough the nested classes of a class.
5049
5050 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
5051
5052         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
5053         on arm.
5054
5055 2008-08-22  Miguel de Icaza  <miguel@novell.com>
5056
5057         * console-io.c (sigcont_handler): Support signal chaining for
5058         SIGCONT.
5059
5060         (console_set_signal_handlers): Use best practices with sigaction,
5061         clear the structure before using it. 
5062
5063 2008-08-22  Robert Jordan  <robertj@gmx.net>
5064
5065         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
5066         Fix the Windows build.
5067
5068 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
5069
5070         * class.c (mono_class_generic_sharing_enabled): Make the default
5071         sharing mode 'corlib'.
5072
5073 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
5074
5075         * console-io.c (console_set_signal_handlers): Fix a warning.
5076
5077         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
5078         method normally, the JIT will take care of avoiding recursion.
5079
5080 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
5081
5082         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
5083
5084         Code is contributed under MIT/X11 license.
5085
5086 2008-08-20  Miguel de Icaza  <miguel@novell.com>
5087
5088         * console-io.c (sigcont_handler): We need to restore the entire
5089         termios state, not only the original settings, as things like echo
5090         can be controlled after this (Booish exposes this issue with its
5091         own ReadLine implementation).
5092
5093         Additionally, we need to set the terminal back into keypad_xmit
5094         mode.
5095         
5096         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
5097         string as a paramter as well.   Otherwise we get different
5098         keyboard sequences.
5099
5100 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
5101
5102         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
5103         delegates with byref out parameter passing. Fixes #351520.
5104
5105         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
5106         a generic context.
5107         (mono_type_get_desc): Add the type arguments for GENERICINST.
5108         (mono_method_full_name): Stringify the class name using mono_type_full_name
5109         so it picks up generic arguments.
5110
5111 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
5112
5113         * console-io.c: Removed debug output.
5114
5115 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
5116
5117         reflection.c (mono_reflection_create_runtime_class): Alloc
5118         the nested classes linked list using the dynamic image mempool.
5119         Fixes leak in corlib compilation.
5120
5121 2008-08-19  Miguel de Icaza  <miguel@novell.com>
5122
5123         * console-io.c: Fix incredibly annoying behavior on the console
5124         after resuming execution after control-z.   This affected every
5125         console application.
5126
5127 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
5128
5129         * mempool-internals.h: Header for mono private mempool functions. The first
5130         two function are for allocating glib linked lists using pools.
5131
5132         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
5133
5134         * Makefile.am: Added mempool-internals.h.
5135
5136 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
5137
5138         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
5139         (mono_domain_free): Ditto.
5140
5141         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
5142         be used by the JIT to store its domain-specific information, instead of putting
5143         it directly into MonoDomain.
5144
5145         * domain.c (mono_install_create_domain_hook): New helper function to install
5146         a hook which initializes domain->runtime_info.
5147
5148         * domain.c (mono_install_free_domain_hook): Ditto.
5149         
5150 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
5153         asserting if the ares parameter is null.
5154
5155         * mono-perfcounters.c: Fix warnings.
5156
5157         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
5158         is not needed, don't check for interruptions either.
5159         (mono_marshal_get_delegate_end_invoke): Ditto.
5160
5161 2008-08-15  Marek Habersack  <mhabersack@novell.com>
5162
5163         * mono-perfcounters.c (predef_readonly_counter): added support for
5164         reading the ASP.NET Requests Queued counter from another process.
5165
5166 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
5167
5168         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
5169         MonoImage to simplify the AOT code.
5170
5171 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
5174         marshalling. Fixes #416078.
5175
5176 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5177         
5178         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
5179         it is set, looking up the icall address is deferred to the JIT, since 
5180         in embedded scenarios, the icall might not be registered in the runtime
5181         doing the AOT compilation. Backported from the 2.0 branch.
5182
5183 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
5186         Fixes #415621.
5187
5188 2008-08-05  Marek Habersack  <mhabersack@novell.com>
5189
5190         * Makefile.am: added support for cross-compilation.
5191
5192 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
5195
5196 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
5197
5198         * mono-perfcounters.c: jitted methods and jitted bytes counters.
5199
5200 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
5201
5202         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
5203         mono-perfcounters.c: performance counters implementation.
5204
5205 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
5208         to gpointer, letting the AOT code decide what to store in it.
5209
5210 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
5211
5212         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
5213           mono_class_setup_methods if the methods are not initialized.
5214
5215         Code is contributed under MIT/X11 license.
5216
5217 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
5218
5219         * verify.c: Remove some debug code I commited by accident.
5220
5221         * verify.c (mono_method_is_valid_in_context): Change the return value
5222         to make possible to distinguish between invalid and unverifiable.
5223
5224         * verify.c (verifier_load_method): Don't return NULL for unverifiable
5225         methods.
5226
5227 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
5228
5229         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
5230         constraints. Fixes regression in gtest-253.
5231
5232 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
5233
5234         * verify.c (mono_verifier_verify_class): Don't allow generic types
5235         with explicit layout.
5236
5237         * verify.c (mono_method_verify): Check locals and argument types.
5238
5239 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
5242         wait if the thread is in StopRequested state.
5243
5244         * class.c (mono_class_from_name): Refactor the module searching code into
5245         a separate function so it can be reused in the AOT case too.
5246
5247 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
5248
5249         * verify.c (mono_type_is_valid_in_context): Improve the error message.
5250         Check both the type and it's generic type definition for loader errors.
5251         
5252         * verify.c (mono_method_is_valid_in_context): Don't generate another
5253         error when a type errors occur, this leads to the wrong exception been
5254         thrown.
5255
5256 2008-07-28  Dick Porter  <dick@ximian.com>
5257
5258         * icall-def.h
5259         * process.c
5260         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
5261         New internal calls to duplicate and close a process handle.
5262
5263 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
5264
5265         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
5266
5267 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
5268
5269         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
5270
5271 2008-07-27  Robert Jordan  <robertj@gmx.net>
5272
5273         * class.c (mono_class_init): Don't compute class.has_finalize for
5274         valuetypes. Fixes #412477.
5275
5276 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
5277
5278         * verify.c: Implement constraint equivalence checking.
5279         This is required when a generic parameter is used as
5280         argument to a constrained one.
5281
5282         Fixes #410637.
5283
5284 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
5285
5286         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5287
5288         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
5289
5290         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
5291         synch with managed object layout.
5292
5293 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
5294
5295         * verify.c (do_branch_op): Handle valuetypes and generic
5296         arguments properly.
5297
5298         * verify.c (do_cmp_op): Same.
5299
5300         Fixes #410383.
5301
5302 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5303
5304         * generic-sharing.c: Fix memory leaks.
5305
5306         * class.c, class-internals.h: Make
5307         mono_class_inflate_generic_type_with_mempool() non-static.
5308
5309 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
5310
5311         * pedump.c (dump_verify_info): Dump full class name.
5312
5313 2008-07-24  Mark Probst  <mark.probst@gmail.com>
5314
5315         * generic-sharing.c: Removed some old code that didn't do anything.
5316
5317 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
5318         * profiler.c: Added runtime_initialized_event,
5319         mono_profiler_install_runtime_initialized and
5320         mono_profiler_runtime_initialized. This new hook tells the profiler
5321         when the runtime is sufficiently initialized to be able to call
5322         mono_thread_attach on the root appdomain.
5323         * profiler.h, profiler-private.h: Likewise.
5324
5325 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
5326
5327         * verify.c (do_cast): Do boxing for generic arguments as well.
5328
5329         * class.c (is_nesting_type): Drop generic instantiations before
5330         checking for nesting.
5331
5332         * class.c (can_access_instantiation): Allow access to generic
5333         arguments.
5334
5335 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * verify.c (verify_class_for_overlapping_reference_fields):
5338         On some cases, the field size might be zero, guard against that.
5339         Fix the explicit layout check to work as expected.
5340
5341 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
5342
5343         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
5344         mono_thread_resume () during shutdown, since the thread we want to abort
5345         might be suspended.
5346
5347 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
5350         warning.
5351
5352         * debug-mono-symfile.c: Fix a warning.
5353
5354         * mono-perfcounters.c (get_cpu_times): Fix a warning.
5355
5356         * object.c (mono_class_vtable): Check if exception_type is set, and return
5357         NULL as defined by the function comments.
5358
5359 2008-07-22  Mark Probst  <mark.probst@gmail.com>
5360
5361         * mempool.c: Use malloc for every single mempool allocation if the
5362         configure option is set.  This makes it easier to track mempool
5363         allocations with tools like Valgrind.
5364
5365 2008-07-22  Jb Evain  <jbevain@novell.com>
5366
5367         * reflection.c (create_dynamic_mono_image): emit the same
5368         metadata version that SL2 does when creating a SL2 image.
5369
5370 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
5371
5372         * icall-def.h:
5373         * icall.c: New icall System.Enum:get_hashcode. This function
5374         avoids the overhead of boxing the enum to the underlying type.
5375
5376 2008-07-21  Mark Probst  <mark.probst@gmail.com>
5377
5378         * reflection.c (mono_method_get_object): Don't let static RGCTX
5379         invoke wrappers get into MonoReflectionMethods.
5380
5381 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
5382
5383         * object-internals.h:
5384         * object.c: New mono_runtime_class_init_full function
5385         that makes throwing the exception optinal.
5386
5387         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
5388         for the case where the exception object is supplied.
5389
5390 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
5391
5392         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
5393         old ld versions.
5394
5395         Contributed under MIT/X11 license.
5396
5397 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5398
5399         * string-icalls.c (ves_icall_System_String_InternalSplit):
5400         Optimize array allocation by caching the MonoClass of the
5401         array type.
5402
5403         * icall.c (ves_icall_Type_GetMethodsByName): Same.
5404
5405         * reflection.c (mono_param_get_objects): Same.
5406
5407 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5408
5409         * icall-def.h:
5410         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
5411         It inflates the given type using the class context.
5412
5413 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5414
5415         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
5416         the vtable if it already exists.
5417
5418         * object-internals.h: Add mono_class_try_get_vtable as part of the
5419         internal API.
5420
5421         * reflection.c (mono_type_get_object): Use the MonoObject from the
5422         vtable when possible. Reduces locking contention on reflection heavy
5423         code.
5424
5425 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
5426
5427         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
5428         g_bit_nth_msf () since that macro is not implemented in eglib.
5429
5430 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5431
5432         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
5433         on platforms which do not support it.
5434
5435 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
5438
5439 2008-07-11  Martin Baulig  <martin@ximian.com>
5440
5441         * mono-debug-debugger.h
5442         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
5443
5444         * mono-debug-debugger.c
5445         (_mono_debugger_interruption_request): New global volatile variable.
5446         (mono_debugger_check_interruption): New public function.
5447
5448         * threads.c
5449         (mono_thread_current_check_pending_interrupt): Call
5450         mono_debugger_check_interruption().
5451         (mono_thread_interruption_checkpoint_request): Likewise.
5452
5453 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5454
5455         * verify.c: Add more type checks for loaded types. Verify the result
5456         handle from ldtoken.
5457
5458 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * loader.c (field_from_memberref): Don't crash if the field
5461         wasn't found.
5462
5463 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5464
5465         * verify.c: Verify if type and method instantiations
5466         don't have invalid VAR or MVAR arguments.
5467
5468 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5469
5470         * verify.c: Fix double free of function pointer list.
5471
5472 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5473
5474         * object.c (mono_string_to_utf8): Comment the new code as it
5475         breaks under eglib.
5476
5477 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
5478
5479         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
5480
5481 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5482
5483         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
5484           is not throw too many times.
5485
5486         Code is contributed under MIT/X11 license.
5487
5488 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5489
5490         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
5491         debugging is turned off.
5492
5493 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
5496
5497 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5498
5499         * class-internals.h, class.c: Added new generic sharing option:
5500         Share only stuff in System.Collections.Generic, which is now the
5501         default.
5502
5503 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5504
5505         * generic-sharing.c, class-internals.h: New function for getting a
5506         generic method in a generic class given the corresponding method
5507         for a different instantiation of the class.  Partly refactored
5508         from mini-trampolines.c.
5509
5510         * class.c: Make sure generic methods have a class_inst if they are
5511         part of a generic class.
5512
5513         * metadata.c (mono_type_stack_size_internal): Handle type
5514         variables.
5515
5516 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5517
5518         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
5519         Signifies whether information on the this/vtable/mrgctx variable
5520         is available.
5521
5522 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5523
5524         * object.c, object-internals.h, icall.c: New function
5525         mono_delegate_ctor_with_method(), which does the same as
5526         mono_delegate_ctor(), but takes an explicit method argument
5527         instead of taking the method from the jit info.
5528
5529         * marshal.c: When creating a delegate with an inflated method take
5530         the "this" argument as the target class for the castclass.
5531
5532 2008-07-03  Mark Probst  <mark.probst@gmail.com>
5533
5534         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
5535         mono_jit_info_table_find() to perform very badly in some cases.
5536
5537 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
5538
5539         * icall.c (type_from_typename): Handle 'string'.
5540
5541         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
5542         wrappers into the wrapper_hash, since the key is not a MonoMethod.
5543
5544 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
5547
5548         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
5549         number of available managed allocator types.
5550
5551         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
5552         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
5553
5554 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
5555
5556         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
5557         which is a low level lock protecting just the 'jit_code_hash' hash table.
5558
5559         * domain.c: Initialize+cleanup jit_code_hash_lock.
5560         
5561 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
5562
5563         * coree.c (mono_load_coree): Set coree_module_handle global variable only
5564         after initialization.
5565
5566         * coree.h: Make MonoFixupExe internal.
5567
5568         Contributed under MIT/X11 license.
5569
5570 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
5571
5572         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
5573         because that is platform independent. Check NumberOfRvaAndSizes in PE32
5574         as well.
5575         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
5576         image being loaded is a CLI image and _CorValidateImage gets called.
5577
5578         * coree.h: Add MonoLoadImage.
5579
5580         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
5581         instead of LoadLibrary.
5582
5583         Contributed under MIT/X11 license.
5584
5585 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
5586
5587         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
5588         for any primitive type.
5589
5590 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
5591
5592         * object.c (mono_array_new_specific): Optimize this and the other allocation
5593         functions a bit.
5594         
5595         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
5596         domains too if mono_dont_free_domains is set.
5597
5598         * domain-internals.h (mono_dont_free_domains): New internal option controlling
5599         whenever to free appdomain data after it has been unloaded.
5600
5601         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
5602         
5603 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
5604
5605         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
5606         (mono_method_get_equivalent_method): Fix a warning.
5607
5608         * object.c (mono_message_init): Avoid looking up array types for each call.
5609
5610 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
5613         call.
5614
5615         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
5616         even more.
5617
5618         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
5619         each iteration.
5620
5621         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
5622         fields of an enum.
5623
5624 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5625
5626         * object.c (mono_value_box): Fix boxing of nullables.
5627
5628 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
5629
5630         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
5631         mono_module_handle that is defined by the linker; no initialization required.
5632         * coree.h: Remove mono_module_handle, add __ImageBase, update
5633         mono_image_open_from_module_handle.
5634         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
5635         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
5636         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
5637         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
5638         to 4 GB away from image base address. IA64 version is not tested but was very
5639         easy to implement and should work if we ever need it.
5640         * domain.c (mono_init_internal): Avoid system error message boxes.
5641         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
5642         with has_entry_point. Handle do_mono_image_load fauilre correctly.
5643         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
5644         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
5645         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
5646
5647         Contributed under MIT/X11 license.
5648
5649 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5650
5651         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
5652         as part of the private mono API.
5653         
5654         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
5655         Do proper argument checking for methods that belong to generic classes.
5656         Do proper type resolution for GMFH/2.
5657         Fixes #377324.
5658         
5659 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5660
5661         * verify.c (do_switch): Fix a memory corruption bug with
5662         the jump index is out of bound.
5663
5664 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * verify.c: Disable debug code.
5667
5668 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5669
5670         * reflection.c (mono_image_get_methodbuilder_token): Use
5671         mono_image_get_methodspec_token_for_generic_method_definition
5672         instead of mono_image_get_memberref_token. We cache more memberef
5673         entries now.
5674
5675 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5676
5677         * verify.c: Inflate exception clause types.
5678         Fixes #402606.
5679         
5680 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
5683         name.
5684
5685         * reflection.c (mono_image_get_ctorbuilder_token): Same.
5686
5687         * reflection.c (mono_image_create_method_token): Same.
5688
5689 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5690
5691         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
5692         It does the same as mono_image_get_methodref_token but works on
5693         MethodBuilder.
5694
5695         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
5696         and always generate a methodspec. This follows the old behavior and fixes
5697         the regressions in System.Core. 
5698
5699 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
5702         don't event mono_class_get () succeeds. Fixes #402182.
5703
5704 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5705
5706         * metadata-internals.h: Added MonoDynamicImage::methodspec
5707         hashtable to store methodspec tokens created for MethodBuilders.
5708
5709         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
5710         MethodBuilders as open instantiations if a methodspec was requested.
5711
5712         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
5713
5714         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
5715
5716         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
5717
5718         Fixes bug #349190.
5719
5720 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5721
5722         * loader.c (method_from_methodspec): Avoid crashing if the
5723         method lookup fails.
5724
5725 2008-06-20  Dick Porter  <dick@ximian.com>
5726
5727         * socket-io.c (get_socket_assembly): Cope with Moonlight network
5728         classes being in a different assembly.  Fixes bug 399184.
5729
5730 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * loader.c (mono_loader_init): Make this callable multiple times.
5733         (mono_dllmap_insert): Call mono_loader_init () so this works even before
5734         the runtime is initialized. Fixes #401755.
5735
5736 2008-06-19  Dick Porter  <dick@ximian.com>
5737
5738         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
5739         Fixes bug 349688.
5740
5741 2008-06-19  Dick Porter  <dick@ximian.com>
5742
5743         * socket-io.c:
5744         * icall-def.h: Implement Socket generic Send() and Receive()
5745         methods.  Fixes bug 395168.
5746
5747 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
5748
5749         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
5750
5751         Contributed under MIT/X11 license.
5752
5753 2008-06-18  Martin Baulig  <martin@ximian.com>
5754
5755         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
5756         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
5757         set to 80.0.  The debugger <-> runtime interface is now frozen as
5758         well.   
5759
5760         * mono-debug.c
5761         (mono_debug_debugger_version): Bump to 4.
5762
5763 2008-06-18  Martin Baulig  <martin@ximian.com>
5764
5765         * debug-mono-symfile.c
5766         (load_symfile): Don't check the minor version.
5767
5768         * debug-mono-symfile.h: Bump the version number to 50.0.
5769
5770 2008-06-18  Martin Baulig  <martin@ximian.com>
5771
5772         * debug-mono-symfile.c
5773         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
5774         minimum required version.
5775
5776 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5777
5778         * reflection.c (mono_custom_attrs_from_property): Fix support for
5779         retriveving cattrs of dynamic inflated generic types.
5780
5781         * reflection.c (mono_custom_attrs_from_event): Same.
5782
5783         * reflection.c (mono_custom_attrs_from_field): Same;
5784
5785         * reflection.c (typebuilder_setup_events): Same cattrs of events.
5786
5787         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
5788         Moved to metadata.c.
5789
5790         * metadata.c: New functions to retrive the equivalent field, event
5791         of property from the generic type definition.
5792
5793         * metadata-internals.h: Added new functions from metadata.c.
5794
5795 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
5798         to cached in a mempool is used.
5799
5800         * metadata.c (free_generic_class): In some situations field generic_info type
5801         is not properly dup'ed and leads to double free'ing.
5802
5803         Fixes #400643.
5804
5805 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5806
5807         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
5808         this arguments (will be needed later for generic methods).
5809         Collect stats.
5810
5811 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5812
5813         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
5814         Create a static RGCTX invoke wrapper for methods which require it.
5815
5816 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5817
5818         * object.c, class-internals.h: New function for checking whether
5819         an individual field is special static.
5820
5821 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
5824         linear search since the table is sorted.
5825
5826         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
5827         Fixes #324180.
5828
5829 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5830
5831         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
5832         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
5833
5834         * gc.c (mono_domain_finalize): Allow an infinite timeout.
5835
5836         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
5837         
5838         * threads.c (mono_thread_request_interruption): Get rid of locking, use
5839         InterlockedCompareExchange to query and modify 
5840         thread->interruption_requested.
5841
5842         * object-internals.h (struct _MonoThread): Change interruption_requested
5843         to a gint32 so it can be modified by atomic operations. Add 
5844         'critical_region_level' from the managed side, change small_id to a guint32,
5845         add new set of 'unused' fields.
5846
5847         * appdomain.c: Bump corlib version.
5848
5849 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * class.c (mono_class_from_name): Search modules as well. Fixes
5852         #322332.
5853
5854 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5855
5856         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
5857         templates.  Templates are generalized with an additional type_argc
5858         argument.  RGCTX templates have type_argc==0, MRGCTX templates
5859         have type_argc>0.
5860
5861         * domain-internals.h, domain.c: New hash table for looking up
5862         MRGCTXs.
5863
5864         * metadata.c, metadata-internals.h: Rename hash and equal
5865         functions for MonoGenericInst's and make them public.
5866
5867         * class-internals.h: New data structures for the MRGCTX.  Macros
5868         for distinguishing slots in the RGCTX and the MRGCTX.
5869
5870 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5871
5872         * object.c (mono_method_get_imt_slot): Put the same methods of
5873         different instantiations of the same generic interface in the same
5874         IMT slots, to make generic sharing simpler.
5875
5876 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5877
5878         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
5879
5880         * metadata.c (mono_metadata_field_info_with_mempool): Added.
5881         This function works just like mono_metadata_field_info, but
5882         accept a mempool as argument to be used allocating memory.
5883
5884         * marshal.c (mono_marshal_load_type_info): Use new function
5885         to load marshal data into image mempool.
5886
5887 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5888
5889         * class.c (mono_class_inflate_generic_type_with_mempool):
5890         This function allows to inflate a generic type using
5891         a mempool.
5892
5893         * class.c (inflate_generic_type): Take a mempool as argument
5894         and use it to do type dup'ing.
5895
5896         * class.c (mono_class_setup_fields): Field type for generic
5897         generic classes are allocated from the image mempool.
5898
5899         * metadata.c (free_generic_class): Inflated field type is
5900         now allocated in the image mempool.
5901
5902 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5903
5904         * threads.c (thread_cleanup): Free MonoThread::name.
5905
5906 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5907
5908         * appdomain.c (ensure_directory_exists): avoid unnecessary
5909         mkdir(2) calls when the shadow directory already exists.
5910         (mono_make_shadow_copy): copy also satellite assemblies from the
5911         private bin directories.
5912
5913 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5916         
5917         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5918         a page boundary. Fixes #396219.
5919
5920 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5921
5922         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5923         due to double-checked locking.
5924
5925 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5926
5927         * assembly.c (build_assembly_name): Release memory on failure.
5928
5929         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5930
5931 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5932
5933         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5934         memory on failure.
5935
5936 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5937
5938         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5939         memory on failure.
5940
5941 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5942
5943         * loader.c (field_from_memberref): Check if field signature type is equal
5944         to the non-inflated type of the field. Fixes #398980.
5945
5946 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5947
5948         * assembly.c (mono_assembly_load_from_full): Call 
5949         mono_assembly_load_friends () outside the assemblies lock, since it can
5950         acquire the loader lock. Fixes #323696.
5951
5952         * reflection.c (resolve_object): Inflate the inst with the context for
5953         FieldOnTypeBuilderInst. Fixes #399010.
5954
5955 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5956
5957         * reflection.c (mono_image_get_field_on_inst_token): Don't
5958         inflate the field to encode it's signature. If it's a
5959         VAR or MVAR it should stay that way in the signature.
5960         Fixes #399047.
5961
5962 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5963
5964         * reflection.c (resolve_object): Release memory of inflated types.
5965
5966 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5967
5968         * loader.c (mono_method_get_signature_full): Remove assert about
5969         loading a methodspec to a generic method. We have such methods, such as
5970         System.Threading.Interlocked::CompareExchange<T>.
5971         This assert was removed since it crashes the verifier when it checks
5972         methods calling CompareExchange<T>.
5973
5974 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5975
5976         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5977         of Type array and not MonoType.
5978
5979 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5980
5981         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5982         <lupus@ximian.com>
5983
5984 2008-06-10  Martin Baulig  <martin@ximian.com>
5985
5986         * debug-mono-symfile.h
5987         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5988         changes to the file format, but we were generating incorrect
5989         source file indices in the line number table due to a bug, which
5990         made backtraces report an incorrect source file.
5991
5992 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5993
5994         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5995         mini/debug-mini.c to here.
5996
5997         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5998
5999         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
6000         use it to release structs returned by mono_debug_find_method.
6001
6002 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
6003
6004         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
6005         since it needs to set method->slot for all interface methods.
6006
6007 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6008
6009         * class-internals.h: Forgot to add.
6010
6011 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6012
6013         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
6014
6015         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
6016         Lookup the custom attributes from property_hash.
6017
6018         * reflection.c (mono_save_custom_attrs): Save the custom attributes
6019         in property_hash. Allocate all data using the image mempool.
6020
6021         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
6022         for dynamic_custom_attrs to checks if the image is dynamic.
6023
6024 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
6027         assemblies array.
6028         
6029         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
6030         runtime functions while holding the domain assemblies lock.
6031
6032 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6033
6034         * verify.c: Reapplied the last bit of the reverted changes.
6035
6036 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
6037
6038         * verify.c: Reapplied more of the reverted changes.
6039
6040 2008-06-09  Martin Baulig  <martin@ximian.com>
6041
6042         * debug-mono-symfile.c (load_symfile): Check the major version
6043         first; if it's wrong, don't print the minor version in the error message.
6044
6045 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
6046
6047         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
6048         lock instead of the domain lock to avoid deadlocks, since the thread might
6049         already hold the loader lock.
6050
6051         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
6052         (mono_thread_attach): Ditto.
6053
6054         * monitor.c: Use a TLS variable for holding the current thread id instead
6055         of calling pthread_self ().
6056         (mono_monitor_init_tls): New internal function to initialize the TLS
6057         variable.
6058         (mono_monitor_try_enter_internal): Put the owner == id check after the
6059         owner == 0 check.
6060
6061         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
6062         missed optimizations when using gcc-4.3.
6063
6064 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
6065
6066         * reflection.c (mono_dynamic_image_free): Free the memory
6067         used by MonoGenericParam in MonoDynamicImage::gen_param.
6068
6069         * reflection.c (mono_reflection_setup_generic_class): Allocate
6070         container from mempool.
6071
6072         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
6073         container from mempool.
6074
6075 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6076
6077         * threads.c (mono_set_pending_exception): New internal function to set the
6078         pending exception of the current thread.
6079         (mono_thread_get_and_clear_pending_exception): Check for 
6080         thread->pending_exception as well.
6081
6082         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
6083
6084         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
6085         it can trigger a collection.
6086
6087 2008-06-06  Martin Baulig  <martin@ximian.com>
6088
6089         Merged the `debugger-kahalo' branch.
6090
6091         * mono-debug.h
6092         (MONO_DEBUGGER_VERSION): Bumped to 72.
6093
6094         * debug-mono-symfile.h
6095         (MonoSymbolFileMethodIndexEntry): Removed.
6096         (MonoSymbolFileMethodEntry): New public typedef.
6097         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
6098         (MonoSymbolFileSourceEntry): Remove everything except `index' and
6099         `data_offset'.
6100         (MonoSymbolFileMethodEntry): Removed.
6101         (MonoSymbolFileLexicalBlockEntry): Removed.
6102         (MonoSymbolFileLineNumberEntry): Removed.
6103         (MonoDebugLexicalBlockEntry): Removed.
6104         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
6105         removed `num_il_offsets' and `il_offsets'.
6106         (MonoSymbolFile): Replace `version' with `major_version' and
6107         `minor_version'.
6108         (MONO_SYMBOL_FILE_VERSION): Replace with
6109         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
6110         `MONO_SYMBOL_FILE_MINOR_VERSION'.
6111
6112         * debug-mono-symfile.c
6113         (mono_debug_symfile_lookup_location): Add support for the new line
6114         number table format.
6115
6116 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6117
6118         * metadata.c (free_generic_class): Release the inflated
6119         MonoClass of dynamic generic classes if it's not a generic
6120         type definition.
6121
6122 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6123
6124         * verify.c: Reapplied more of the reverted changes.
6125
6126 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6127
6128         * reflection.c (lookup_custom_attr): Clean the cached flag or
6129         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
6130         for SRE types.
6131
6132 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
6133
6134         * verify.c: Reapplied a small part of the reverted changes.
6135
6136 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6139
6140         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
6141         previously in managed code.
6142         (mono_monitor_exit): Ditto.
6143         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
6144
6145         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
6146         the managed definition.
6147
6148 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
6149
6150         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
6151
6152 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
6155         
6156         * monitor.c: Add some micro optimizations.
6157
6158         * icall.c (type_from_typename): Handle 'bool'.
6159
6160 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * verify.c: Implement constructor verification per P III 1.8.1.4.
6163         Fixes #396716.
6164
6165 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
6166
6167         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
6168         holding the assemblies lock here too.
6169
6170 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6171
6172         * verify.c: Kill stack_top function.
6173
6174 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6175
6176         * verify.c: Kill stack_get function.
6177
6178 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6179
6180         * verify.c (mono_method_verify): Last change broke the build. Fixed.
6181
6182 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
6183
6184         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
6185         more reliable.
6186
6187         * verify.c (mono_method_verify): Inflate params and locals to avoid
6188         mismatch when checking for compatibility.
6189
6190 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
6191
6192         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
6193         Length prefix should be size in bytes. Fix bug #339530.
6194         
6195         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
6196         Length prefix should be size in bytes. Fix bug #339530.
6197
6198         Code is contributed under MIT/X11 license.
6199
6200 2008-06-05  Bill Holmes <billholmes54@gmail.com>
6201
6202         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
6203
6204         Contributed under MIT/X11 license.
6205
6206 2008-06-05  Martin Baulig  <martin@ximian.com>
6207
6208         * mono-debug-debugger.c
6209         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
6210
6211 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
6214         while holding the assemblies lock to prevent deadlocks. Handle the case
6215         where the search hook returns NULL but the assembly was still loaded.
6216         Fixes #323696.
6217
6218         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
6219         modify domain state.
6220
6221 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
6222
6223         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
6224         * Makefile.am (pedump_LDADD): Post-process object files and
6225         add dtrace-generated object file, if necessary.
6226
6227         Code is contributed under MIT/X11 license.
6228
6229 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6230
6231         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
6232
6233 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6234
6235         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
6236
6237 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6238
6239         * threads.c: Try to free everything from the delayed free table
6240         when shutting down threads, and set the variable to NULL after the
6241         table is freed so that calling
6242         mono_thread_hazardous_try_free_all() when shutting down the root
6243         domain doesn't crash.
6244
6245 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
6246
6247         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
6248         the caller if resulting type was inflated.
6249
6250         * class.c (mono_class_create_from_typespec): Free the MonoType if it
6251         was inflated.
6252
6253         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
6254
6255
6256 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
6257
6258         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
6259         class library tests.
6260
6261         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
6262         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
6263         #396989.
6264
6265 2008-06-04  Mark Probst  <mark.probst@gmail.com>
6266
6267         * domain.c, domain-internals.h: The JIT infos are now freed by the
6268         JIT info table code.  They are freed immediately if there only a
6269         single JIT info table in circulation.  If there is more, the free
6270         is delayed via a queue.
6271
6272         * threads.c, threads-types.h: New hazard pointer function for
6273         freeing all freeable delayed items in one sitting.
6274
6275 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6276
6277         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
6278
6279         * reflection.c (typebuilder_setup_properties): Same.
6280
6281         * reflection.c (typebuilder_setup_events): Same.
6282
6283 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6284
6285         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
6286         and use it for allocating memory.
6287
6288         * reflection.c (mono_marshal_spec_from_builder): Same.
6289
6290         * reflection.c: Change code to use new signatures.
6291
6292         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
6293
6294 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6295
6296         * decimal.c (rescale128): Put back one line which was accidently commented
6297         out.
6298         
6299         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
6300         to cause crashes.
6301
6302 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6303
6304         * reflection.c (mono_reflection_generic_class_initialize): Name must
6305         be always malloc'ed so we can free it later on. Do this for field, property
6306         and event.
6307
6308         * metadata.c (free_generic_class): Free field, property and event names.
6309
6310 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6311
6312         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
6313         instead of g_memdup.
6314
6315         * reflection.c (typebuilder_setup_fields): Same.
6316
6317 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * decimal.c (rescale128): Optimize this function a bit more.
6320
6321 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6322
6323         * metadata.c (free_generic_class): Release some memory from
6324         SRE generic classes.
6325
6326 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
6327
6328         * reflection.c (mono_image_get_generic_field_token): No reference
6329         to name is kept, free it.
6330
6331         * reflection.c (mono_reflection_generic_class_initialize): Free
6332         more memory of the inflated field.
6333
6334 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
6335
6336         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
6337         code.
6338
6339 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
6340
6341         * reflection.c (mono_dynamic_image_free): Release memory used by
6342         MonoDynamicImage::array_methods elements.
6343
6344         * reflection.c (assembly_add_win32_resources): Release memory after
6345         encoding.
6346
6347 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
6348
6349         * decimal.c (log2_32): Use an optimized version for this function too.
6350         
6351         * decimal.c (log2_64): Fix this on 32 bit machines.
6352
6353 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
6354
6355         * class.c (mono_dup_array_type): Implement allocation using a mempool.
6356
6357         * class.c (mono_metadata_signature_deep_dup): Same.
6358
6359         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
6360         a mempool.
6361
6362         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
6363
6364         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
6365
6366         * metadata-internals.h: Added mono_metadata_signature_dup_full.
6367
6368         * class-internals.h: Update signatures to take a MonoMemPool.
6369
6370 2008-06-02  Dick Porter  <dick@ximian.com>
6371
6372         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
6373         * icall-def.h: Add
6374         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
6375         FormatMessage API to get the error text.  Fixes bug 321827.
6376
6377 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
6378
6379         * decimal.c: Add some micro optimizations to make decimal operations faster.
6380
6381 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * reflection.c (method_encode_clauses): Take a mempool
6384         as parameter and use it to allocate the clause array.
6385
6386         * reflection.c (mono_image_get_field_on_inst_token): Free
6387         the inflated type after encoding it.
6388
6389         * reflection.c (mono_dynamic_image_free): Free each element
6390         of MonoDynamicImage::gen_params.
6391
6392         * reflection.c (reflection_methodbuilder_to_mono_method):
6393         Allocate the generic param array from the mempool.
6394         Allocate signature params from the mempool.
6395
6396         * reflection.c (mono_reflection_generic_class_initialize):
6397         Free inflated fields after been used.
6398
6399 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
6400
6401         * icall.c: Reapply the memory leak fixes as they no
6402         longer make mono crash.
6403
6404 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         * reflection.c (mono_type_get_object): Don't store the suplied
6407         MonoType with type_hash. A caller which pass a type that
6408         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
6409         might end with a pointer to freed memory.
6410         The solution is to use byval_arg or this_arg from the associated
6411         MonoClass of the supplied type.
6412
6413 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
6414
6415         * icall.c: Revert the rest of the last change as it breaks the build too.
6416
6417 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6418
6419         * icall.c: Revert a leak fix as it's breaking the build.
6420
6421 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
6424
6425 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6426
6427         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
6428
6429 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * icall.c: Fix some memory leaks.
6432
6433 2008-05-29  Dick Porter  <dick@ximian.com>
6434
6435         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
6436         async socket operations from the pending list when a socket
6437         closes.  Leaving it until the threadpool services the event
6438         exposes a race condition when a socket descriptor is reused.
6439         Fixes bug 377589.
6440
6441 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6442
6443         * object.c: Fix negative index check for array alocation.
6444
6445 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * icall.c, marshal.c: Delegate wrappers should skip visibility.
6448         This check is performed by the verifier for IL created delegates
6449         and by Delegate::CreateDelegate for programatically created ones.
6450         Fixes #372406.
6451
6452 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6453
6454         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
6455         Fix code to use mono_array_size_t instead of int.
6456
6457         Based on patch by Luis F. Ortiz.
6458         Contributed under X11 license.
6459         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6460
6461 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * icall.c: Added ves_icall_System_Array_GetLongLength and
6464         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
6465         arrays.
6466
6467         * icall.h: Export both new functions.
6468
6469         Based on patch by Luis F. Ortiz.
6470         Contributed under X11 license.
6471         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6472
6473 2008-05-28  Martin Baulig  <martin@ximian.com>
6474
6475         The debugger now requires exactly r103463.
6476
6477         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
6478         This version is not supported by the debugger, wait for 72.
6479
6480 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6481
6482         * object.h: Changed array related functions to use
6483         mono_array_size_t instead of guint32. Forgot to commit this file.
6484
6485         Patch by Luis F. Ortiz.
6486         Contributed under X11 license.
6487         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6488
6489
6490 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6491
6492         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
6493         don't define it. Use the number literal instead.
6494
6495 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6496
6497         * icall.c: Changed array related functions to use
6498         mono_array_size_t instead of guint32.
6499
6500         * icall.c (ves_icall_System_Array_GetLength): Check for length
6501         overflow under MONO_BIG_ARRAYS.
6502
6503         Based on patch by Luis F. Ortiz.
6504         Contributed under X11 license.
6505         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6506
6507 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6508
6509         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
6510
6511         Based on patch by Luis F. Ortiz.
6512         Contributed under X11 license.
6513         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6514
6515 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6516
6517         * object.c, object.h: Changed array related functions to use
6518         mono_array_size_t instead of guint32.
6519
6520         Patch by Luis F. Ortiz.
6521         Contributed under X11 license.
6522         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6523
6524 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * object.h: Introduced mono_array_size_t typedef. This must be used
6527         in all places an array length is expected. This is 64bits wide if
6528         MONO_BIG_ARRAYS is enabled.
6529
6530         Patch by Luis F. Ortiz.
6531         Contributed under X11 license.
6532         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6533
6534 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * security-manager.c class.c: Set the class exception info by calling
6537         mono_class_set_failure ().
6538
6539         * class.c (mono_class_get_exception_data): New accessor function.
6540         (mono_class_set_failure): Store exception_data in the property hash.
6541
6542         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
6543         the struct as a property.
6544
6545         * loader.c (mono_get_method_full): Store the lookup result for method
6546         tokens in method_cache, the others in methodref_cache to decrease the memory
6547         usage of hash tables.
6548
6549         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
6550         (mono_image_init): method_cache is lazy inited now.
6551
6552         * metadata-internals.h (struct _MonoImage): Change method_cache to
6553         a MonoValueHashTable, add a separate methodref_cache.
6554
6555 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
6556
6557         * number-formatter.h: Fix tables to avoid arithemtic overflow in
6558           Double.ToString as exposed by Bug #383531.
6559
6560 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * number-formatter.h: Make some tables static.
6563
6564         * class.c (mono_method_set_generic_container): New accessor function.
6565         (mono_method_get_generic_container): Ditto.
6566
6567         * class-internals.h (struct _MonoMethod): Remove rarely used 
6568         'generic_container' field, store it in the property hash instead. Add 
6569         'is_generic' boolean field instead.
6570
6571         * image.c (mono_image_init): Initialize property_hash.
6572         (mono_image_close): Destroy property_hash.
6573
6574         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
6575         hold rarely used fields of runtime structures belonging to this image.
6576
6577         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
6578         to get/set method->generic_container.
6579
6580         * loader.c (mono_get_method_from_token): Avoid loading the method header for
6581         generic methods.
6582
6583 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * class.c (mono_class_inflate_generic_method_full): Don't increase
6586         mono_stats.inflated_method_count for methods found in the cache.
6587
6588         * threads.c (mono_thread_request_interruption): Add a comment about 
6589         QueueUserAPC ().
6590
6591 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6592
6593         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
6594         interface_offsets_packed table.
6595         
6596         * class.c (mono_class_init): Remove some dead code.
6597
6598         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
6599         mono_class_setup_vtable () when CAS is active to detect security problems.
6600
6601 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
6602
6603         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
6604
6605         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
6606         parameters as it's irrelevant for delegate checking.
6607
6608 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6609
6610         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
6611
6612         * class.c (mono_class_init): Control the creation of a generic vtable using
6613         a global which is true by default, but set to false by the runtime startup code.
6614         
6615         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
6616         Disabled for now since it breaks the embedding API.
6617         Move the setup of class->methods for arrays to mono_class_setup_methods ().
6618         (mono_class_setup_methods): Add a memory barrier.
6619
6620         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
6621         when mono_class_init () doesn't compute the generic vtable.
6622         
6623 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6624         * profiler.c: Added mono_profiler_install_statistical_call_chain,
6625         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
6626         to support call chains (backtrace) in the stat profiler.
6627         * profiler.c, profiler-private.h: Likewise.
6628
6629 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6630
6631         * generic-sharing.c: Init generic class when a method of it is
6632         requested via a runtime generic context.
6633
6634 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6635
6636         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
6637
6638         * reflection.c (mono_type_get_object): Add a FIXME.
6639
6640         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
6641
6642         * class.c (mono_class_get_method_by_index): New helper function, returning an
6643         entry in the class->methods array.
6644
6645 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6646
6647         * class.c (mono_class_init): Only do the array optimization for szarrays. 
6648         Avoid creating a generic vtable for generic instances as well.
6649         (mono_class_get_method_from_name_flags): Don't search in the metadata for
6650         generic instances.
6651
6652 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * loader.c (mono_get_method_constrained): Inflate the signature
6655         with class context. Fix #325283.
6656
6657 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6658
6659         * object.c (mono_class_create_runtime_vtable): Add a comment.
6660
6661         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
6662         where needed.
6663         (setup_interface_offsets): Handle the case when this is called twice for arrays.
6664         (mono_class_setup_vtable_general): Add an assert.
6665         (mono_class_init): Avoid creating a generic vtable for arrays.
6666
6667         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
6668         here, let mono_class_init () do that.
6669
6670         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
6671         interfaces in mscorlib.
6672
6673         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
6674         interfaces. Add some comments.
6675         (mono_class_init): Call mono_class_setup_methods () here since it is no
6676         longer called by mono_class_setup_vtable ().
6677
6678         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
6679         not set in class->vtable.
6680         (mono_class_create_runtime_vtable): Reenable the disabled code.
6681
6682         * object.c (mono_class_create_runtime_vtable): Disable the last change for
6683         now as it causes some test failures.
6684
6685         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
6686         if using the vtable trampoline. Also remove some strange code which put the
6687         generic methods themselves into the vtable slots. Remove the AOT init_vtable
6688         stuff as it is no longer needed.
6689
6690 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6691
6692         * pedump.c: Give make --verify all option check code as well.
6693         Using --verify code won't check for metadata now.
6694
6695 2008-05-19  Martin Baulig  <martin@ximian.com>
6696
6697         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
6698
6699         * mono-debug.c
6700         (_mono_debug_using_mono_debugger): New global variable; it's set
6701         directly by the debugger, so mono_debug_using_mono_debugger() also
6702         works after attaching.
6703
6704 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6705
6706         * object.c (mono_class_create_runtime_vtable): Use memory barriers
6707         as we do double checked locking on MonoClass::runtime_info and
6708         MonoClassRuntimeInfo::domain_vtables.
6709
6710 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * debug-helpers.c (print_field_value): Fix a warning.
6713
6714 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
6715
6716         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
6717         set in the AOT case.
6718
6719 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6720
6721         * class.c (mono_class_setup_vtable_general): Use memory barriers
6722         as we do double checked locking on MonoClass::vtable.
6723
6724 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6725
6726         * reflection.c (resolve_object): Inflate only if the generic context
6727         is not null. Fixes #389886.
6728
6729 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
6730
6731         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
6732         instead of g_free.
6733
6734         Code is contributed under MIT/X11 license.
6735
6736 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6737
6738         * class.c: Revert unrelated change.
6739
6740 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
6743         a generic instantiation, use mono_class_from_mono_type instead of playing
6744         with MonoType directly.
6745
6746 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6747
6748         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
6749         checks must ignore generic instantiations, so mono_class_has_parent is not
6750         suitable. Fixes #390128.
6751
6752 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
6753
6754         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
6755         it to avoid registering tokens during metadata generation. Fixes #390023.
6756
6757 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6758
6759         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
6760         consistent.
6761
6762         Contributed under MIT/X11 license.
6763
6764 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6765
6766         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
6767         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
6768         to fixup the EXE image.
6769         (mono_cleanup): Use mono_close_exe_image.
6770         (mono_close_exe_image): New function.
6771         * image.c: Include "marshal.h".
6772         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
6773         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
6774         counting when the image is loaded outside of mono_image_open_full. Set status
6775         based on GetLastError.
6776         * coree.c: Include required headers. Add init_from_coree.
6777         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
6778         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
6779         (_CorExeMain): Set init_from_coree.
6780         (CorExitProcess): Only call ExitProcess for now.
6781         (CorBindToRuntimeEx): New stub implementation.
6782         (CorBindToRuntime): New function.
6783         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
6784         (MonoFixupExe): ILONLY executables require no fixups.
6785         (mono_set_act_ctx): New function to set activation context.
6786         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
6787         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
6788         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
6789         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
6790         as MONO_INTERNAL.
6791         * domain-internals.h: Add mono_close_exe_image.
6792
6793         Contributed under MIT/X11 license.
6794
6795 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6796
6797         * metadata.c (mono_metadata_compute_size): Correctly calculate field
6798         size for generic param and event tables. Fixes #388977.
6799
6800 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
6801
6802         * loader.c (mono_method_signature): Use memory barriers because of the double
6803         checked locking pattern.
6804
6805         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
6806         aborting or aborted as well. Fixes #376391.
6807         
6808         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
6809         existing runtime state in the Suspend handler during shutdown.
6810
6811 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
6812
6813         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
6814
6815         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
6816         which are starting up or shutting down.
6817
6818         * threads.c (mono_threads_set_shutting_down): Don't return a value since
6819         this function never returns if the runtime is already shutting down.
6820
6821         * icall.c (ves_icall_System_Environment_Exit): Update after 
6822         mono_threads_set_shutting_down () signature change.
6823         
6824 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
6825
6826         * class.c: Added can_access_instantiation to verify if the instantiation
6827         is visible. Fix access check for nested types as they returned TRUE
6828         before doing type and generic instantiation visibility checks.
6829
6830 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6831
6832         * reflection.c (mono_reflection_create_generic_class): The created type
6833         must have a different container from its TypeBuilder. Otherwise they
6834         will end sharing generic arguments, which is wrong.
6835
6836         Due to the sharing, making a generic instance of the created type using
6837         the TypeBuider generic arguments resulted in the generic type definition
6838         been returned, which is wrong as well.
6839
6840         As a bonus the code was leaking the type_params array. This memory should
6841         be allocated from the image mempool.
6842
6843         This fixes bug #354047.
6844
6845 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6846
6847         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
6848         to here         as they are now used in assembly.c new code.
6849         Added a skipverification flag to MonoAssembly.
6850         New internal function mono_assembly_has_skip_verification.
6851
6852         * assembly.c: New function mono_assembly_has_skip_verification. It checks
6853         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
6854         part of #387274.
6855
6856 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6857
6858         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
6859         needed. Fixes #387034.
6860
6861         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
6862
6863 2008-05-06  Miguel de Icaza  <miguel@novell.com>
6864
6865         * assembly.c (mono_assembly_load_reference): Prevent crash while
6866         disassembling Silverlight 2.0 executables while we still do not
6867         have GACed libraries.
6868
6869 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6870
6871         * reflection.c: Special case generic type definitions as well. Fixes #383444.
6872
6873 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
6874
6875         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
6876         of the dynamic case. Fixes #387404.
6877
6878 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6879
6880         *verify.c (mono_verifier_is_class_full_trust): If under
6881         verify_all and the verifier mode was not set, only
6882         gac and corlib types are fulltrust. This makes --verify-all
6883         usable to detect unverifiable code, which is the expected
6884         use case.
6885
6886 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6887
6888         * verify.h: Ops, commited the header with debug
6889         enabled.
6890
6891 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6892
6893         * verify.c (merge_stack): Use the new value on unverifiable
6894         stack merges.
6895
6896         * verify.c (verify_type_compatibility_full): Comparison
6897         of nullable types can't use mono_class_is_assignable_from.
6898
6899         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6900         that makes all verification errors be reported.
6901
6902         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6903         mono_method_verify.
6904
6905 2008-05-05  Robert Jordan  <robertj@gmx.net>
6906
6907         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6908         support for value types. See #386415.
6909
6910         * object.c: comments.
6911
6912         Code is contributed under MIT/X11 license.
6913
6914 2008-05-05  Martin Baulig  <martin@ximian.com>
6915
6916         * debug-mono-symfile.h
6917         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6918         for old pre-terrania symbol files.
6919
6920 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6921
6922         * mono-config.c: Add ppc64 architecture.
6923
6924         Code is contributed under MIT/X11 license.
6925
6926 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6927
6928         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6929           PPC64 uses function descriptors as well.
6930
6931         Code is contributed under MIT/X11 license.
6932
6933 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * object.c (compute_class_bitmap): Ignore literal static fields.
6936
6937         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6938         var has an invalid format.
6939         (describe_ptr): Add some sanity checks for the vtable.
6940         (add_nursery_frag): Clear unused nursery fragments.
6941         (major_collection): Clear all remaining nursery fragments.
6942
6943 2008-05-03  Robert Jordan  <robertj@gmx.net>
6944
6945         * image.c, metadata-internals.h: add thunk_invoke_cache.
6946
6947         * marshal.c, marshal.h: implement
6948         mono_marshal_get_thunk_invoke_wrapper ().
6949
6950         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6951
6952         Code is contributed under MIT/X11 license.
6953
6954 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6955
6956         * verify.c (do_leave): Empty the stack.
6957
6958 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * class.c (mono_class_is_assignable_from): Variance
6961         doesn't work between reference and value types. For example,
6962         given type C<T+>, C<int32> is not assignable to C<object>.
6963         Break the argument checking loop on first error. 
6964
6965 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6966
6967         * icall.c : base64_to_byte_array() needs some more strict
6968           check for sequence of '=' characters. Patch by Santa
6969           Marta (http://deee.g.hatena.ne.jp/santamarta).
6970
6971           Contributed under MIT/X11 license.
6972           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6973
6974 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6975
6976         * domain.c: Disable LoadLibrary support to fix Win32 build.
6977
6978         Code is contributed under MIT/X11 license.
6979
6980 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6981
6982         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6983         to help with cache behaviour.
6984
6985 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6986
6987         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6988         method. 
6989
6990 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6991
6992         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6993
6994 2008-05-01  Dick Porter  <dick@ximian.com>
6995
6996         * process.c (process_get_fileversion): Only pass 16 bits of
6997         language ID to VerLanguageName.  Fixes bug 381204.
6998
6999 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         * verify.c (mono_method_verify): Fix the comparison
7002         operator for code bounds check.
7003
7004 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
7005
7006         * verify.c (mono_method_verify): Check the bounds of
7007         all access of the code array.
7008
7009 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
7010
7011         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
7012
7013 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
7014
7015         * image.c (mono_image_strong_name_position): Fix return value when the rva is
7016         not valid.
7017
7018 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
7019
7020         * loader.c (mono_get_method_from_token, mono_method_signature): Add
7021         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
7022         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
7023         fixup main EXE images when using mono.exe for mixed-mode assembly support.
7024         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
7025         mono_runtime_load.
7026         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
7027         runtime initialization from metadata.
7028         * assembly.c: Remove obsolete ceGetModuleFileNameA.
7029         (mono_set_rootdir): Use mono_get_module_file_name.
7030         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
7031         handles.
7032         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
7033         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
7034         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
7035         MonoCLIImageInfo. Add support for module handles.
7036         (load_cli_header): Update mono_cli_rva_image_map signature.
7037         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
7038         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
7039         (mono_image_rva_map): Add support for module handles.
7040         (mono_image_ensure_section_idx): Add support for module handles.
7041         (mono_image_close): Add support for module handles.
7042         (do_load_header): Add support for module handles.
7043         (mono_image_open_from_module_handle): New function for internal use.
7044         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
7045         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
7046         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
7047         handles.
7048         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
7049         * image.h: Add mono_image_fixup_vtable.
7050         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
7051         support.
7052         * coree.h: New file.
7053         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
7054         unsupported native code.
7055         (mono_marshal_set_callconv_from_modopt): New function splitted from
7056         mono_marshal_get_managed_wrapper.
7057         (mono_marshal_get_managed_wrapper): Use
7058         mono_marshal_set_callconv_from_modopt.
7059         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
7060         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
7061         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
7062         that results in a deadlock when the runtime is loaded in _CorDllMain.
7063         * Makefile.am: Add coree.c and coree.h.
7064
7065         Contributed under MIT/X11 license.
7066
7067 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7068
7069         * generic-sharing.c: Search for type arguments in array element
7070         types as well.
7071
7072 2008-04-28  Mark Probst  <mark.probst@gmail.com>
7073
7074         * class-internals.h, generic-sharing.c: New, small runtime generic context.
7075
7076         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
7077
7078         * object.c: Don't setup the RGCTX when the vtable is created,
7079         because we're setting it up lazily now.
7080
7081 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
7082
7083         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
7084         64 bit support.
7085
7086 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
7087
7088         * verify.c (verify_class_for_overlapping_reference_fields): 
7089         If class is under fulltrust allow reference types to overllap
7090         if they have the same RVA.
7091
7092 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
7093
7094         * pedump.c: Added new flag valid-only, that makes the verifier
7095         behaves just like --security=validil. It won't fail type load
7096         due to unverifiable restrictions.
7097
7098 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
7099
7100         * class-internals.h (struct MonoMethod): Added a verification_success
7101         field to cache verifier executions. Reduced MonoMethod:slot size by
7102         one bit.
7103
7104 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
7105
7106         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
7107         instead of a 'vt' argument to save an indirection and to allow these to be used
7108         for valuetypes.
7109         (scan_vtype): New helper function to scan an area using a gc descriptor.
7110         (mono_gc_wbarrier_value_copy): Implement this.
7111         (handle_remset): Add support for REMSET_VTYPE.
7112         (find_in_remset_loc): Ditto.
7113         (mono_gc_base_init): Allow some debugging options to be controlled through the
7114         use of the MONO_GC_DEBUG env variable.
7115         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
7116         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
7117
7118 2008-04-23  Martin Baulig  <martin@ximian.com>
7119
7120         * domain.c (mono_domain_create): Move the call to
7121         mono_debug_domain_create() down, after allocating the domain id.
7122
7123 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
7124
7125         verify.c (verify_class_for_overlapping_reference_fields): Skip
7126         static fields while verifying for overlapping fields as they
7127         don't matter at all.
7128
7129 2008-04-23  Marek Habersack  <mhabersack@novell.com>
7130
7131         * domain-internals.h: added a declaration of
7132         mono_make_shadow_copy.
7133
7134         * assembly.c (mono_assembly_open_full): shadow copying of
7135         assemblies moved to here, so that all the assemblies within the
7136         application domain's private binary directories can be
7137         processed. Fixes bug #380546
7138
7139         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
7140         mono_make_shadow_copy and made non-static. The decision whether
7141         to shadow-copy an assembly is made based on its location - it's
7142         copied if it's in one of the private application domain binary
7143         directories and its different to the target file in the shadow
7144         directory. Fixes bug #380546
7145
7146 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
7147
7148         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
7149
7150         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
7151         types.
7152
7153         * reflection.c (mono_image_create_token): Handle 
7154         Method/ConstructorOnTypeBuilderInst.
7155         (resolve_object): Ditto.
7156         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
7157         so it can be called from resolve_object. Also handle the case when the inflated
7158         class already has its methods setup.
7159
7160 2008-04-21  Martin Baulig  <martin@ximian.com>
7161
7162         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
7163
7164 2008-04-20  Geoff Norton  <gnorton@novell.com>
7165
7166         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
7167         pointer dereference.
7168
7169 2008-04-15  Marek Habersack  <mhabersack@novell.com>
7170
7171         * appdomain.c (try_load_from): if IOMAP is in effect, call the
7172         portability API to look up the assembly file. Fixes behavior in
7173         situations when the application has a bin/ directory, but the
7174         assembly search patch refers to Bin/ (and thus the requested file
7175         name is Bin/SomeLibrary.dll). Fixes bug #379888
7176
7177 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
7178
7179         verify.c (mono_type_is_generic_argument): Extracted this check
7180         from a dozen places to here.
7181
7182         verify.c: Fixed all issues related to boxing generic arguments
7183         and their constraints.
7184
7185 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
7186
7187         verify.c (mono_class_interface_implements_interface): Fix win32 build.
7188
7189 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
7190
7191         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
7192         isn't finished yet. Fixes #363447.
7193
7194 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
7197         Fixes #346419.
7198
7199 2008-04-13  Jb Evain  <jbevain@novell.com>
7200
7201         * domain.c: update the 2.1 profile versions.
7202         Merged from the Moonlight 2 branch.
7203
7204 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
7207         mscorlibs for the non-refonly case as well.
7208
7209         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
7210         in mono_assembly_load_from_full (). Fixes #378924.
7211
7212 2008-04-11  Geoff Norton  <gnorton@novell.com>
7213
7214         * icall.c: The global extern environ doesn't exist on Mac.  We
7215         need to call NSGetEnviron instead.
7216
7217 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7218
7219         verify.c: Add generic method constraint verification.
7220
7221 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7222
7223         class.c (mono_class_inflate_generic_method_full): Add a long
7224         explanation to the is_mb_open hack. Remove the FIXME.
7225
7226 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7227
7228         * verify.c (mono_method_verify): Mark all unknown opcodes
7229         as invalid. Mark jmp as unverifiable.
7230
7231 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7232
7233         * verify.c: Add code to do type constraint verification on class instances.
7234
7235         * verify.c (mono_verifier_verify_class): Use the type constraint 
7236         verification code.
7237
7238 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
7239
7240         * class.c (mono_class_get_field_default_value): Don't pass cindex
7241         as hint to mono_metadata_get_constant_index. The local is not initialized
7242         and should contain garbage most of the time. This could only work
7243         with a lot of luck.
7244
7245 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7246
7247         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
7248
7249 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
7250
7251         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
7252
7253         * class.c (mono_class_from_generic_parameter): Save the token of the
7254         generic param in MonoClass::sizes.generic_param_token.
7255
7256         * reflection.c (mono_custom_attrs_from_class): If the class type is
7257         VAR or MVAR retrieve the attributes of the generic param.
7258
7259 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7260
7261         * class.c (mono_class_init): Do class verification if the verifier
7262         is enabled.
7263
7264 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7265
7266         * verify-internal.h: Added mono_verifier_verify_class.
7267
7268         * verify.c: Added mono_verifier_verify_class. It checks for
7269         classes with explicit layout that have overlapping reference fields.
7270
7271         * pedump.c: Init the verifier state prior to verification. Fixed
7272         command line arguments.
7273
7274 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
7275
7276         * Makefile.am: Added verify-internals.h, hopefully fix the build.
7277
7278 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
7279
7280         * verify-internals.h: Fix a warning.
7281
7282 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7283
7284         * verify-internals.h: New header with the verifier configuration
7285         extracted from mini.c.
7286
7287         * verify.c: Implemented the new functions exported by verify-internals.h.
7288
7289 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * verify.c: Add proper verification of ckfinite.
7292
7293 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
7294
7295         * verify.c (do_conversion): Improved error message to something
7296         more meanfull.
7297
7298         * verify.c (check_is_valid_type_for_field_ops): Fix to work
7299         with primitive types.
7300
7301 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * verify.c: Added tail prefix checking. Marked icall
7304         as unverifible.
7305
7306 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
7307
7308         * verify.c: Fix the detection of branches to the middle
7309         of an instruction.
7310
7311 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
7312
7313         * verify.c: Implemented verification of volatile. and
7314         unaligned. prefix. Check if a type is valid after retrieving it.
7315
7316 2008-04-01  Dick Porter  <dick@ximian.com>
7317
7318         * process.c (process_get_fileversion): If there's no string block,
7319         set the file language to en_US.  Fixes the other new part of bug
7320         374600.
7321
7322 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
7323
7324         * class.c: New functions mono_method_can_access_field_full and
7325         mono_method_can_access_method_full. They perform type visibility
7326         and type site check.
7327
7328         * class-internal.h: Added exported functions.
7329
7330         * verify.c: Use new functions to implement proper visibility checks.
7331
7332 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
7333
7334         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
7335
7336 2008-03-28  Dick Porter  <dick@ximian.com>
7337
7338         * process.c (process_get_fileversion): Use the first language ID
7339         we see, rather than insisting on an invariant language.  Fixes bug
7340         374600.
7341
7342 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
7345         the streams to fix reading of invalid memory later.
7346
7347         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
7348         to ease debugging.
7349
7350 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
7351
7352         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
7353         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
7354
7355 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
7356         * threads.h: Added MonoThreadManageCallback type and
7357         mono_thread_set_manage_callback prototype
7358         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
7359         (used to store the mono_thread_manage callback).
7360         * threads.c: Added mono_thread_set_manage_callback, and handle
7361         "MonoThread->manage_callback" in build_wait_tids.
7362
7363 2008-03-26  Dick Porter  <dick@ximian.com>
7364
7365         * process.c (process_get_fileversion): Set FileVersionInfo strings
7366         to Empty when the resource doesn't have the particular info.
7367         Fixes bug 355717.
7368
7369 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
7370
7371         * verify.c (mono_method_verify): Proper prefix validation.
7372
7373 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
7374
7375         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
7376         itself in a separate argument instead of throwing them. Fixes #373448.
7377
7378         * appdomain.c: Bump corlib version.
7379
7380 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7381
7382         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
7383
7384 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
7385
7386         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
7387         version macros.
7388
7389 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7390
7391         * generic-sharing.c, class-internals.h: Code for putting
7392         reflection types into the runtime generic context.
7393
7394 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
7397         Fixes #340662. 
7398
7399
7400 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
7401
7402         * verify.c (VerifyContext): Added instruction prefix data to the struct.
7403
7404         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
7405
7406         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
7407
7408         * verify.c (do_cast): Let the result value keep the boxed status.
7409
7410         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
7411
7412 2008-03-17  Jb Evain  <jbevain@novell.com>
7413
7414         * reflection.c: when running on a 2.0 runtime, emit
7415         unconditionally the #~ header version as 2.0, and the
7416         CLI header version as 2.5, for symmetry's sake with csc.
7417
7418 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
7419
7420         * class.c: Remove the unused cache_interface_offsets stuff.
7421
7422         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
7423         profiler.c: Fix warnings.
7424
7425 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7426
7427         * generic-sharing.c, class-internals.h: Support for putting
7428         methods into the runtime generic context.
7429
7430 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
7431
7432         * class.c (mono_class_setup_fields): Ignore calls made to this function for
7433         classes which are generic instances of not-yet finished typebuilders. Fixes
7434         #351172.
7435
7436         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
7437
7438 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
7441
7442         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
7443         field, replace it with a hash table in MonoDynamicImage.
7444
7445         * reflection.c (inflate_mono_method): Access the generic definition object from
7446         image->generic_def_objects instead of imethod->reflection_info.
7447
7448         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
7449
7450         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
7451         
7452         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
7453         function in reflection.c so it is easier to keep in sync with the dynamic image
7454         creation code.
7455
7456         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
7457         mono_image_close ().
7458
7459 2008-03-15  Mark Probst  <mark.probst@gmail.com>
7460
7461         * class.c (mono_class_generic_sharing_enabled): Disable generic
7462         sharing for all architectures except AMD64 and x86 to fix build.
7463
7464 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
7465
7466         * verify.c: Use the generic definition MonoGenericContext when available.
7467         Remove code for checking generics instance compatibility in favor of
7468         mono_class_is_assignable_from.
7469
7470 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7471
7472         * marshal.c, marshal.h, metadata-internals.h, image.c,
7473         wrapper-types.h: New wrapper for invoking a shared static method
7474         without having to pass the runtime generic context argument.
7475
7476 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
7479
7480 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
7483         
7484         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
7485         create a token from a FieldOnTypeBuilderInst.
7486         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
7487         (resolve_object): Ditto.
7488
7489         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
7490         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
7491
7492 2008-03-14  Martin Baulig  <martin@ximian.com>
7493
7494         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
7495
7496         * debug-mono-symfile.h
7497         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
7498         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
7499
7500 2008-03-10  Martin Baulig  <martin@ximian.com>
7501
7502         * debug-mono-symfile.h
7503         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
7504         `lexical_block_table_offset'.
7505         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
7506         `lexical_blocks'.
7507         (MonoSymbolFile): Added `version'.
7508
7509         * mono-debug.h
7510         (MonoDebugLexicalBlockEntry): Removed.
7511         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
7512         `lexical_blocks'.
7513
7514         * mono-debug.c (mono_debug_add_method): Don't compute lexical
7515         blocks here; the debugger now does this internally.
7516
7517 2008-02-27  Martin Baulig  <martin@ximian.com>
7518
7519         * object.c (mono_runtime_exec_main): Call
7520         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
7521         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
7522
7523 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7524
7525         * verify.c (verify_type_compatibility_full): Allow native int to be converted
7526         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
7527
7528 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7529
7530         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
7531         ldftn with a virtual method.
7532
7533 2008-03-13  Geoff Norton  <gnorton@novell.com>
7534
7535         * decimal.c:  Only include memory.h if the platform has it.
7536
7537 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
7538
7539         * assembly.c, class.c, metadata-internals.h: make sure public key
7540         tokesns are compared in a case-insensitive way. Also, all
7541         the lookups in the GAC use a lowercase public key token
7542         (gaacutil already does the lowercasing on install). Fixes
7543         bug #369541.
7544
7545 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
7546
7547         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
7548         and return value.
7549
7550 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
7551
7552         * image.c: when someone loads a mscorlib from a file, return the
7553         currently loaded mscorlib (fixes bug #369253).
7554
7555 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7556
7557         * class.c: handle types with no parents by forcing them to have
7558         System.Object as a parent and marking them as broken (this currently
7559         allows the first part of bug #369173 to work as well, likely because
7560         we don't check for typeload exceptions everywhere yet).
7561
7562 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
7563
7564         * class.c: more complete check that types belong to corlib
7565         (fixes second part of bug #369173).
7566
7567 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
7568
7569         * generic-sharing.c:  Including glib.h for the MSVC builds to define
7570           "inline" to "__inline" before including mono-membar.h.
7571           
7572         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
7573           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
7574           MSVC builds.
7575
7576         Contributed under MIT/X11 license.
7577
7578 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
7579
7580         * verify.c (do_invoke_method): Remove return type validation.
7581
7582         * verify.c (do_ret): Do return type validation at return site instead of
7583         call site.
7584
7585 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
7588
7589         * verify.c: Some todos cleaned and improved a few error messages.
7590
7591 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
7594
7595 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7596
7597         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
7598         system types correctly.
7599
7600         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
7601         function.
7602
7603 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7604
7605         * assembly.c (build_assembly_name): Fix a warning.
7606
7607 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7608
7609         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
7610         the called function takes an object type argument. Fixes storing or
7611         valuetypes across remoting as well as reducing memory usage.
7612         * image.c, metadata-internals.h: remove now unused ldfld_remote and
7613         stfld_remote wrapper caches.
7614
7615 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7616
7617         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
7618         is not found.
7619
7620         * reflection.c (mono_image_register_token): New helper function to save
7621         a token->object mapping.        
7622
7623         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
7624         managed code.
7625
7626         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
7627         one dimension arrays. Fixes #367670.
7628         (mono_reflection_get_type_internal): Ditto.
7629
7630 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7631
7632         * marshal.c: mono_load_remote_field_new() always returns object.
7633         so use the proper signature (fixes bug #366445).
7634
7635 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7636         
7637         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
7638         add an 'inline_failure' flag instead.
7639
7640 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7641
7642         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
7643         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
7644         contains the location of "this", used for exception handling.
7645
7646 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
7649         their size on all platforms for perf reasons.
7650
7651 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7652
7653         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
7654         object-internal.h
7655
7656         * object-internal.h: Same.
7657
7658 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7659
7660         * reflection.h: Fix the build I just broke.
7661
7662 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7663
7664         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
7665         Test if a token is valid, this remove explicit usage of 
7666         MonoDynamicImage::tokens from the verifier code.
7667
7668         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
7669
7670         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
7671         instead of direct access to MonoDynamicImage::tokens.
7672
7673 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7674
7675         * verify.c (token_bounds_check): Fix the build I just broke.
7676
7677 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7678
7679         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
7680
7681         * verify.c (verifier_load_method): Fixed the errors message.
7682
7683         * verify.c (mono_method_verify): Fixed a debug message.
7684
7685 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
7686
7687         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
7688         mono-perfcounters.h, class-internals.h: support for predefined
7689         writable counters, query of categories and counters, bugfixes.
7690
7691 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7692
7693         * verify.c (do_refanytype): Verify the refanytype opcode.
7694
7695         * verify.c (mono_method_verify): Use do_refanytype.
7696
7697 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7698
7699         * verify.c (do_mkrefany): Verify the mkrefany opcode.
7700
7701         * verify.c (mono_method_verify): Use do_mkrefany.
7702
7703 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
7704
7705         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
7706         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
7707         implementation.
7708
7709 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
7712         the type load exception.
7713
7714 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7715
7716         * verify.c: Added a few FIXME for method signatures
7717
7718         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
7719         of mono_method_get_signature and get vararg call working. Removed unused
7720         checks for return value.
7721
7722         * verify.c (do_refanyval): Verify the refanyval opcode.
7723
7724         * verify.c (mono_method_verify): Implemented verification of arglist and
7725         use do_refanyval.
7726
7727 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7728
7729         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
7730         vtypes to marshal.c.
7731
7732         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
7733         it works for AOT as well.
7734
7735 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7736
7737         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
7738         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
7739         the system time is adjusted.
7740
7741 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
7742
7743         * icall.c, icall-def.h: use the new time functions (fixes the
7744         non-monotonic behaviour of TickCount).
7745
7746 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7747
7748         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
7749         it breaks the build.
7750         
7751         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
7752         cattr is not finished yet.
7753
7754 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * verify.c: Proper token validation for field, method and type.
7757
7758 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7759
7760         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
7761
7762         * loader.c (method_from_memberref): Generate type load error instead of method missing
7763         if the type is not found.
7764
7765 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7766
7767         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
7768         some of the conversions caused the generation of a marshal directive exception.
7769
7770 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7771
7772         verify.c: Report which exception should be thrown by the JIT.
7773         Added a lot of FIXME notes.
7774
7775 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7776
7777         * generic-sharing.c: Runtime generic context slots are not
7778         instantiated on init anymore.  Instead, provide function to do the
7779         instantiating on demand.
7780
7781         * class-internals.h: Added vtable to runtime generic context.
7782         Macros for encoding direct and indirect slot offsets in one
7783         guint32.
7784
7785 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7786
7787         * object.c, generic-sharing.c: Moved some generic sharing code
7788         from object.c to generic-sharing.c.
7789
7790         * generic-sharing.c: Added support for extensible runtime generic
7791         context.
7792
7793         * metadata-internals.h: Two new hash tables in MonoImage for
7794         extensible runtime generic context support.
7795
7796         * domain.c: Unregister generic vtables upon domain unloading.
7797
7798         * image.c: Destroy new hash tables upon image unloading.
7799
7800         * metadata.c: Unregister generic subclasses upon image unloading.
7801
7802         * class-internals.h: New data structure for runtime generic
7803         context template.  New fields in the runtime generic context for
7804         extensible part.
7805
7806         * Makefile.am: Added generic-sharing.c.
7807
7808 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
7811         there is a pending loader exception, raise it.
7812
7813         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
7814         same.
7815
7816         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
7817         same.
7818
7819         Fixes #363450.
7820
7821 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7822
7823         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
7824
7825         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
7826         
7827         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
7828         ref-only requests for compatibility with MS.
7829
7830 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7831
7832         * reflection.c (mono_custom_attrs_from_method): Don't silently
7833         return an empty list for generic method instances.
7834         (mono_custom_attrs_from_param): Likewise.
7835
7836 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
7837             Raja R Harinath  <harinath@hurrynot.org>
7838
7839         Fix #354757
7840         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
7841         * class.c (mono_class_inflate_generic_method_full): Initialize it
7842         when a fully-open method is instantiated.
7843         * metadata.c (inflated_method_equal, inflated_method_hash): Update
7844         to new field.
7845         * reflection.c (inflate_mono_method): Don't create a temporary context.
7846
7847 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7848
7849         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7850         Compute correct value, to prepare for imethod->reflection_info going away.
7851
7852 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7853
7854         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
7855
7856 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7857
7858         * verify.c: Implement skip visibility flag.
7859
7860 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7861
7862         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
7863         which contains an extra field to tell the kind of exception that should be thrown.
7864
7865         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
7866
7867 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
7868
7869         * loader.c (mono_method_get_param_names): Initialize 'klass' after
7870         'method' is updated.
7871
7872 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
7873
7874         * class.c (mono_class_layout_fields): Set class->min_align for classes using
7875         explicit layout as well. Fixes #360375.
7876
7877 2008-02-11  Geoff Norton  <gnorton@novell.com>
7878
7879         * loader.c: Guard and dereference against inflated generic methods
7880
7881 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
7882
7883         * class.c: Include Retargetable spec in assembly name.
7884         * assembly.c: Always include PublicKeyToken spec in assembly name
7885         (with value "null" if assembly is not signed), and include
7886         Retargetable spec.
7887         * icall-def.h: Added icall for Assembly.get_fullname.
7888         * icall.c: Added icall returning the fullname of an assembly.
7889
7890 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * class.c (mono_class_setup_vtable_general): Add a missing call to
7893         mono_class_setup_methods () which is needed in the AOT case.
7894
7895 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7898         stack type of the given MonoType.
7899
7900         * verify.c (verify_type_compatibility_full): Handle the void type.
7901
7902         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7903         way stack merging works.
7904
7905         * verify.c (store_local): Improved verification message.
7906
7907         * verify.c (do_branch_op): If the merging is invalid, the method
7908         is unverifiable and not invalid. Improved error message.
7909
7910         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7911         a reference type diferent than System.Object. Improved error
7912         message.
7913
7914 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7915
7916         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7917
7918         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7919         type of an enum even if the argument is byref.
7920
7921         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7922         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7923
7924         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7925
7926         *verify.c (verify_type_compatibility_full): Make enum types
7927         compatible with their base types.
7928
7929         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7930         types are compatible for the special case of a boxed valuetype and
7931         System.Object.
7932
7933         * verify.c (verify_stack_type_compatibility): The function
7934         is_compatible_boxed_valuetype was extracted from here.
7935
7936         * verify.c (push_arg): Only set ctx->has_this_store if the method
7937         is not static.
7938
7939         * verify.c (do_ldelem): Fixed a typo in an error message and added
7940         strict check for mixing int32 and native int as the array type
7941         and ldelem type.
7942
7943         * verify.c (merge_stacks): Consider boxed valuetypes in the
7944         compatibility checks.
7945
7946 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7947         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7948
7949 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7950         *class.c: use_new_interface_vtable_code: renamed the env var to have
7951         a "MONO_" prefix, and fix the logic to enable it by default.
7952
7953 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7954         *class.c:
7955         mono_class_setup_vtable_general: rewrote the way in which interface
7956         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7957         makes the code more maintainable.
7958         For now the old code is still there, and can be activated setting
7959         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7960
7961 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7962
7963         * verify.c: guarded some debug functions around and #ifdef.
7964
7965         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7966
7967 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7968
7969         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7970         changes for now since they seem to break too many things.
7971
7972 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7973
7974         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7975         mono_marshal_find_nonzero_bit_offset): Added macro and function
7976         for finding the byte- and bit-offset of a bitfield within a
7977         struct.
7978
7979 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7982         (mono_marshal_get_struct_to_ptr): Ditto.
7983
7984         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7985         cctor_signature.
7986
7987 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7990         between methods for non-corlib types.
7991
7992 2008-02-02  Geoff Norton  <gnorton@novell.com>
7993
7994         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7995         generic parameters as well. (Fixes #342536)
7996
7997 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7998
7999         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
8000
8001         * verify.c (do_invoke_method): Fix for calling with byref structs.
8002
8003         * verify.c (do_cast): push a boxed value type based on the type token and not
8004         the type of stack.
8005
8006 2008-01-31  William Holmes  <billholmes54@gmail.com>
8007
8008         * process.c (process_module_string_read): Check the size returned form 
8009           VerQueryValue to avoid out of memory exception. 
8010
8011 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
8014         Handle properly modules which are not in the moduleref table. Fixes
8015         #356938.
8016
8017 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
8018
8019         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
8020         the dynamic case which is now in managed code.
8021         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
8022
8023         * marshal.c (mono_string_to_bstr): Fix a warning.
8024         (init_com_provider_ms): Ditto.
8025
8026         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
8027
8028         * exception.c (mono_get_exception_out_of_memory): New helper function.
8029
8030 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
8031
8032         * marshal.c: Add support for BSTR marshalling
8033         using other COM systems.
8034
8035         Code is contributed under MIT/X11 license.
8036
8037 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
8038
8039         * object.c (mono_runtime_invoke_array): reverted previous
8040         commit as it breaks the build.
8041
8042 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
8043
8044         * object.c (mono_runtime_invoke_array): Verify arguments for
8045         invalid types. Fixes #348522.
8046
8047 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
8048
8049         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
8050         non-final virtual calls using call. 
8051
8052         * verify.c (do_invoke): fixed some TODOs.
8053
8054         * verify.c (push_arg): set has_this_store for "ldarga 0".
8055
8056 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
8057
8058         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
8059         which belong to an inflated class. Fixes #356531.
8060
8061 2008-01-26  Robert Jordan  <robertj@gmx.net>
8062
8063         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
8064         which resort to FindFirstFile when a certain error condition
8065         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
8066         Code is contributed under MIT/X11 license.
8067
8068 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
8069
8070         * marshal.c (emit_marshal_string): Fix out string marshalling
8071         to use specified encoding. Fixes #323900.
8072
8073         Code is contributed under MIT/X11 license.
8074
8075 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
8076
8077         * class.c (mono_class_inflate_generic_method_full): Don't modify
8078         iresult->context after cache check.
8079
8080 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
8081
8082         * class.c (mono_class_inflate_generic_method_full): Change the
8083         struct assignments to memcpy for better visibility and add some comments.
8084
8085 2008-01-23  Dick Porter  <dick@ximian.com>
8086
8087         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
8088         procedure, and make it work on windows.
8089
8090 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
8091
8092         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
8093         a MonoReflectionTypeBuilder since it is always of that type.
8094
8095         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
8096
8097         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
8098
8099         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
8100         
8101         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
8102
8103         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
8104
8105         * reflection.c (mono_reflection_create_runtime_class): Remove already created
8106         instantiations from the type cache.
8107
8108 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8109
8110         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
8111
8112         * verify.c (do_unbox_value): push a controled mutability managed pointer.
8113
8114 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8115
8116         * verify.c (do_ldstr): added, verifies if the #US token is valid.
8117
8118         * verify.c (mono_method_verify): removed old TODO
8119
8120 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8121
8122         * verify.c (do_newobj): add visibility check.
8123
8124 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
8125
8126         * verify.c (do_load_function_ptr): add visibility check.
8127
8128 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
8129         *class.c:
8130         mono_generic_class_get_class: hook profiler events.
8131         mono_field_get_offset: added to support heap-shot in the new profiler.
8132         *class.h: exported mono_field_get_offset.
8133         * reflection.c:
8134         mono_reflection_setup_internal_class: hook profiler events.
8135
8136 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
8137
8138         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
8139         argument here too and use it to avoid checking for pending exceptions if 
8140         possible.
8141
8142 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
8143
8144         * assembly.c (build_assembly_name): add arg for passing the assembly
8145         flags. Do not consider a PublicKey with value "null" valid.
8146         (mono_assembly_name_parse_full): added boolean argument that will be
8147         set if the assembly name contains a PublicKeyToken spec. Added support
8148         for the Retargetable spec for which only Yes or No are allowed as valid
8149         value. Consider assembly name invalid if Retargetable spec is set, but
8150         either version, culture or public key (token) are not specified.
8151         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
8152         with implementation in assembly.c.
8153         * icall.c (fill_reflection_assembly_name): also copy assembly flags
8154         from MonoAssemblyName.
8155         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
8156         introduced argument for mono_assembly_name_parse_full to know if the
8157         assembly name has a PublicKeyToken spec, and if it has instruct
8158         fill_reflection_assembly_name to use default value for keyToken (if
8159         PublicKeyToken is null).
8160
8161 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
8162
8163         * verify.c (mono_method_verify): fixed ovf ops with
8164         float values. They are unverifiable now.
8165
8166 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
8167
8168         * class.c (set_failure_from_loader_error): add BadImageException to the
8169         list of exceptions that can cause a type to fail to load.
8170
8171         * class.c (mono_class_get_exception_for_failure): same.
8172
8173 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
8174
8175         * verify.c (in_any_exception_block): added, check if offset
8176         is part of any exception handling clause.
8177
8178         * verify.c (get_stack_type): added VAR and MVAR types.
8179
8180         * verify.c (do_stobj): better error messages.
8181
8182         * verify.c (do_cpobj): added, check cpobj.
8183
8184         * verify.c (do_initobj): added, check initobj.
8185
8186         * verify.c (do_sizeof): added, check sizeof.
8187
8188         * verify.c (do_localloc): added, check localloc.
8189
8190         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
8191
8192 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
8193
8194         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
8195         save_lmf/restore_lmf opcodes.
8196
8197         * threads.c (mono_threads_install_notify_pending_exc): New function to
8198         install a callback notifying the JIT there is a pending exception on a thread.
8199         (mono_thread_request_interruption): Call the new callback.
8200         (mono_thread_get_and_clear_pending_exception): New function to return the
8201         exception pending on a thread.
8202
8203         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
8204         to turn off checking for pending exceptions.
8205         (mono_marshal_get_native_wrapper): Ditto.
8206
8207 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * threads-types.h: Get rid of the unnecessary extern declarations.
8210
8211 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
8212
8213         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
8214         return field from parent class if not private.
8215         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
8216         returns fields from parent class if they are not private.
8217         (method_nonpublic): added function to determine if a given method
8218         should be considered non-public. Returns false for private methods
8219         on parent class, and internal methods from parent on the 1.0 profile.
8220         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
8221         use method_nonpublic function to determine whether method should be
8222         returned.
8223         (property_accessor_public): use newly introduced method_nonpublic
8224         function to determine whether accessor is non-public. 
8225         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
8226         event from parent class if not private. Only return static event if
8227         Static flag is set, and only return static event from parent class if
8228         FlattenHierarchy flag is set.
8229         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
8230         include non-private events from parent class.
8231
8232 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
8233
8234         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
8235         warning.
8236
8237 2008-01-16  Wade Berrier <wberrier@novell.com>
8238
8239         * security.c: Add assembly.h header to appease some warnings
8240
8241 2008-01-16  Dick Porter  <dick@ximian.com>
8242
8243         * process.c (process_module_string_read): Remove trailing null
8244         when saving string.
8245
8246 2008-01-16  Mark Probst  <mark.probst@gmail.com>
8247
8248         * class-internals.h: A new data structure describing the layout of
8249         a runtime generic context (MonoRuntimeGenericContextTemplate).
8250
8251         * metadata-internals.h: Added a hash table to MonoDomain that maps
8252         from open generic classes to their runtime generic context
8253         templates.
8254
8255         * object.c: Building of the runtime generic context, including
8256         proper handling of generic type arguments of superclasses.
8257         Building of the runtime generic context according to the template.
8258
8259 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
8260
8261         * class.c (mono_class_setup_fields): Set field.count for generic instances.
8262         Fixes #350856.
8263
8264         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
8265         mono_portability_find_file (). Fixes #325466.
8266         (mono_image_get_public_key): Fix a warning.
8267
8268 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
8271         Fixes #353550.
8272         (mono_class_from_name_case): Ditto.
8273
8274 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
8275
8276         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
8277           common storage for the tables used in the System/NumberFormatter class.
8278
8279 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
8282
8283 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
8284
8285         * verify.c (get_boxable_mono_type): check if the token is valid.
8286
8287         * verify.c (set_stack_value): changed to add an error if an
8288         invalid type is set on stack. Changed all callers due to signature change.
8289
8290         * verify.c (do_stobj): implement stobj validation.
8291
8292 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
8293
8294         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
8295         set container->is_method, it was set earlier.
8296
8297         * metadata.c (type_in_image): Handle MVARs which belong to not finished
8298         generic methods.
8299
8300         * reflection.c (mono_reflection_initialize_generic_parameter): Set
8301         is_method of the generic container to TRUE for methods.
8302
8303 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * metadata.c (type_in_image): Handle type parameters properly.
8306
8307         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
8308         memory ownership of this structure.
8309
8310 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
8311
8312         * verify.c (get_boxable_mono_type): make typedref types been just
8313         unverifiable. check for void type.
8314
8315         * verify.c (do_unbox_any): added, verify opcode unbox.any.
8316
8317         * verify.c (do_load_function_ptr): accept method spec tokens.
8318
8319 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
8320
8321         * marshal.c (mono_class_native_size): Always set *align even if this is called
8322         recursively.
8323
8324 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
8327         out-of-date.
8328
8329 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
8330
8331         * verify.c: removed some old unused tables. A huge bunch of small fixes
8332         to things found while testing the verifier with mono basic.
8333
8334         * verify.c (dump_stack_value): dump null literal flag to.
8335
8336         * verify.c (verify_type_compatibility_full): fix comparison
8337         for types that have a generic super type.
8338
8339         * verify.c (verify_stack_type_compatibility): fix compatibility
8340         between null literals and reference types. fix compatibility between
8341         boxed valuetypes and object. fix corner case test for enums.
8342
8343         * verify.c (do_cmp_op): proper verification of cgt.un in case
8344         of reference types.
8345
8346         * verify.c (do_invoke_method): fix error message.
8347
8348         * verify.c (do_store_indirect
8349
8350         * verify.c (check_is_valid_type_for_field_ops): proper verification
8351         of managed pointers to valuetypes and boxed valuetypes. proper verification
8352         of null literals.
8353
8354         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
8355         allow token to be a reference type.
8356
8357         * verify.c (do_cast): proper handling of boxes valuetypes.
8358
8359         * verify.c (do_stelem): proper handling of storing a boxed valuetype
8360         in object[].
8361
8362         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
8363         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
8364         fixed the decoding of unbox_any
8365
8366 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
8367
8368         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
8369
8370 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
8371
8372         * verify.c (do_newobj): do delegate verification.
8373
8374         * verify.c (verify_delegate_compatibility): perform delegate
8375         verification.
8376
8377         * verify.c (verify_ldftn_delegate): perform tests related to
8378         ldftn delegates.
8379
8380         * verify.c (mono_delegate_signature_equal): perform the
8381         slightly diferent signature comparison required by delegates.
8382
8383         * metadata.c (mono_metadata_type_equal_full): added and exported
8384         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
8385         allows signature only comparison.
8386
8387         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
8388         as MONO_INTERNAL.
8389
8390 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
8391
8392         * verify.c: added a bunch of stack_slot_* functions to
8393         make access to stack slot type easier. This is required to
8394         allow optional flags, like null literal, boxed value and
8395         this pointer.
8396         All access paths to IlStackDesc::stype have been changed 
8397         to use these new funcions.
8398         Removed a bunch of unused functions and cleared all warnings.
8399         This patch introduces the usage of the this pointer and 
8400         boxed value flags.
8401
8402 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
8403
8404         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
8405
8406 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8407
8408         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
8409         match managed version.
8410
8411         * appdomain.c: Bump corlib version.
8412         
8413         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
8414         argument.
8415
8416 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
8417
8418         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
8419         Set public key token to zero-length byte array if assembly is not
8420         strongnamed.
8421
8422 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
8425         writing a vtype array elem.
8426
8427 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
8428
8429         * assembly.c (build_assembly_name): return FALSE if length of token is
8430         not 16 (if not "null").
8431         (mono_assembly_name_parse_full): return FALSE if value of version,
8432         culture, token or key is 0.
8433         * icall.c (fill_reflection_assembly_name): add boolean arguments to
8434         specify whether public key and public key token must be set to default
8435         value (zero-length byte array) if not available. Set versioncompat to
8436         SameMachine. If public key is available or the default is set, then
8437         set PublicKey flag.
8438         (ves_icall_System_Reflection_Assembly_FillName): if no public key
8439         is available, use empty byte array as default value. On the 2.0
8440         profile, use default value for public key token if not set.
8441         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
8442         profile, use default value for public key if not set. On the 2.0
8443         profile, use default value for public key token if not set.
8444         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
8445         default values for public key and public key token.
8446
8447 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8448
8449         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
8450         field to keep it in synch with the managed object.
8451
8452         * marshal.c (emit_marshal_object): Add support for byref marshalling of
8453         delegates. Fixes #351520.
8454
8455         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
8456         contains defined memory.
8457         
8458         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
8459
8460         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
8461         
8462         * sgen-gc.c (check_consistency): New helper function to do a consistency check
8463         of the GC data structures.
8464
8465         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
8466
8467         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
8468         
8469         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
8470         barrier.
8471         (mono_array_clone_in_domain): Ditto.
8472         (mono_array_clone_in_domain): Ditto.
8473
8474         * threads.c (start_wrapper): Register the thread start argument as a GC root.
8475         (cache_culture): Use a write barrier.
8476
8477         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
8478         (ves_icall_get_property_info): Ditto.
8479
8480         * object.h (MONO_STRUCT_SETREF): New macro.
8481
8482         * class-internals.h (MonoStats): Add some GC statistics.
8483
8484         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
8485
8486 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
8487
8488         * exception.c (mono_exception_from_name_two_strings):
8489         Break from loop after method is found.
8490
8491 2008-01-04  Dick Porter  <dick@ximian.com>
8492
8493         * process.c (process_module_string_read): Rename variable to
8494         reflect correct usage, after fixing bug 345972.
8495
8496 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * verify.c (mono_type_create_fnptr_from_mono_method): 
8499         created a MonoType function pointer instance to be used during
8500         verification. The verifier releases this memory at end.
8501
8502         * verify.c (mono_method_is_constructor): extracted repeated
8503         checks for constructor into a single class.
8504
8505         * verify.c (do_push_field): use new extracted method
8506         for constructor check.
8507
8508         * verify.c (do_newobj): same.
8509
8510         * verify.c (do_ldftn): renamed to do_load_function_ptr
8511         and make it verify ldvirtftn too.
8512
8513         * verify.c (mono_method_verify: proper verification
8514         of ldvirtftn. release created MonoMethod instances.
8515
8516 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
8517
8518         * verify.c (token_bounds_check): added.
8519
8520         * verify.c (do_ldftn): added.
8521
8522         * verify.c (mono_method_verify): proper verificartion of ldftn.
8523
8524 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
8525
8526         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
8527         than the table row count. It's the resposibility of the caller to
8528         make the bounds check and raise the correct error.
8529
8530         * metadata.c (mono_metadata_decode_row_col): Same.
8531
8532         * loader.c (mono_get_method_from_token): perform bounds check
8533         on token for methoddef table.
8534
8535 2007-12-29  Miguel de Icaza  <miguel@novell.com>
8536
8537         * icall.c
8538         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
8539         assert into a negative result, the managed code already coped with
8540         that.
8541
8542         Some folks on Windows reported this error. 
8543
8544 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
8545
8546         * appdomain.c: Bump corlib version.
8547         * icall.c:
8548         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
8549         CultureInfo.CreateCulture to create CultureInfo for name.
8550         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
8551         create CultureInfo for name. Fixes bug #347174.
8552
8553 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
8554
8555         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
8556         flags.
8557
8558         * verify.c (is_valid_branch_instruction): allow branching to the
8559         first instruction of the protected block.
8560
8561         * verify.c (is_valid_cmp_branch_instruction): same.
8562
8563         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
8564         avoid double initialization.
8565
8566         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
8567         detect which cases the eval stack should just be copied.
8568
8569         * verify.c (mono_method_verify): check if the eval stack
8570         is empty when entering a protected block.
8571
8572 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
8573
8574         * verify.c: added is_clause_in_range, is_clause_inside_range,
8575         is_clause_nested and verify_clause_relationship. They perform
8576         the verifications stated in P1 12.4.2.7.
8577
8578         * verify.c (mono_method_verify): remove some unused variables,
8579         add the new exception clause checks, add instruction border
8580         checks for protected block start/end, improved some error 
8581         messages and fixed a bug in the way invalid instruction access
8582         is detected.
8583
8584 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
8587         from GC 7.0 if available.
8588
8589         * object.c: Remove an unused define.
8590         
8591         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
8592
8593         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
8594
8595         * null-gc.c (mono_gc_make_descr_for_array): Implement.
8596
8597         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
8598
8599         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
8600         to take the same arguments as the other make_descr functions.
8601
8602         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
8603
8604         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
8605         directly.
8606
8607         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
8608         mini.c.
8609
8610         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
8611         call to boehm-gc.c.
8612
8613         * boehm-gc.c (mono_gc_register_root): Fix a warning.
8614
8615         * null-gc.c (mono_gc_register_root): Fix a warning.
8616
8617         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
8618
8619         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
8620         (mono_gc_base_init): Call GC_init ().
8621
8622         * null-gc.c: Define mono_gc_register_root () as a no-op.
8623
8624         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8625
8626 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
8627
8628         * verify.c: add prototype for merge_stacks at top
8629
8630         * verify.c (do_switch): added.
8631
8632         * verify.c (merge_stacks): on some cases the stack merging
8633         was not happening properly. Unequal stack sizes at merge
8634         points should be invalid.
8635
8636         * verify.c (mono_method_verify): added more debug info on stack state.
8637         verify switch properly.
8638
8639 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
8640
8641         * method-builder.h: New file, moved the mono_mb_ declarations here from 
8642         marshal.h.
8643
8644         * boehm-gc.c marshal.c: Include method-builder.h.
8645
8646         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
8647
8648         * marshal.c: Remove some code which is now in method-builder.c.
8649
8650 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * method-builder.c: New file, extraction of the method builder functionality 
8653         from marshal.c.
8654
8655         * marshal.c: Move the mb functions into method-builder.c.
8656
8657         * marshal.h marshal.c: Export some mono_mb_... functions.
8658
8659         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
8660
8661         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
8662         the caller.
8663
8664         * class.c (mono_class_get_full): Check the token type in the dynamic case.
8665
8666         * loader.c (mono_field_from_token): Ditto.      
8667
8668         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
8669         type as well.
8670         
8671         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
8672         Fixes #342565.
8673
8674         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
8675         a helper function for setting it.
8676
8677         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
8678
8679         
8680         * assembly.c: Significally simplify code now that referenced assemblies are 
8681         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
8682
8683         * threads.h: Don't include  the internal threads-types.h header file. Fixes
8684         #349952.
8685
8686 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
8687
8688         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
8689         instructions that were target of branches or are at protected block boundaries.
8690
8691         * verify.c (in_same_block): handle filter clauses.
8692
8693         * verify.c (is_valid_branch_instruction): added. checks the target of
8694         instructions br or brtrue/false.
8695
8696         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
8697         binary branch instructions such as beq and bge.
8698
8699         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
8700         and made it pin the instruction as been part of the exception block.
8701
8702         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
8703         of in_same_block.
8704
8705         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
8706         of in_same_block.
8707
8708         * verify.c (do_ret): ret from a protected block is unverifiable and
8709         not invalid.
8710
8711         * verify.c (do_static_branch): verify br and br.s instructions.
8712
8713         * verify.c (merge_stacks): add extra param to support detection
8714         of branches in the middle of instructions.
8715         
8716         * verify.c (mono_method_verify): verify branches and exception blocks
8717         that target the middle of instructions. Proper verification of br and br.s.
8718
8719 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
8722         skip_visibility field.
8723         (reflection_methodbuilder_from_dynamic_method): Ditto.
8724
8725         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
8726         registrations. Fixes #348193.
8727
8728         * threads.h: Move the internal mono_thread_get_pending_exception () to
8729         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
8730
8731 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
8734         icall registration. Fixes #348193.
8735
8736         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
8737         for corlib classes into object. Fixes #349621.
8738
8739 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
8740
8741         * icall.c (property_accessor_nonpublic): new function to determine
8742         whether an accessor allows a property to be considered non-public.
8743         Returns false for private accessor(s) from parent class, and internal
8744         accessor(s) from parent on 2.0 profile (and higher).
8745         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
8746         to determine whether property should be included if NonPublic flag
8747         is set. Fixes bug #349078.
8748
8749 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
8750
8751         * verify.c (init_stack_with_value): added.
8752
8753         * verify.c (mono_method_verify): extracted common
8754         code for exception initialization into init_stack_with_value.
8755
8756         * verify.c (mono_method_verify): initialize the exception
8757         for handler clauses as well.
8758
8759         * verify.c (mono_method_verify): fix the exception clause
8760         ordering rules, it should use handler end offset and not
8761         start offset.
8762
8763 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
8764
8765         * rawbuffer.c: remove useless warning.
8766
8767 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
8768
8769         * threads.h, threads-types.h: move functions to the correct header
8770         (fixes bug#349952).
8771
8772 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8773
8774         * verify.c (mono_method_verify): proper verification
8775         of exception handling clauses ranges and fallthru in
8776         and out of protected blocks.
8777
8778 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8779
8780         * verify.c (mono_method_verify): fixed compilation issue.
8781
8782 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8783
8784         * verify.c (mono_method_verify): a printf slipped in, changed
8785         to use verifier debug macro.
8786
8787 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
8788
8789         * verify.c (is_correct_leave): check for filter clauses.
8790
8791         * verify.c (do_filter): added.
8792
8793         * verify.c (mono_method_verify): property verification of leave.
8794
8795
8796 2007-12-18  Mark Probst  <mark.probst@gmail.com>
8797
8798         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
8799         Win32 build, until we figure out how to do the proper thing on
8800         Win32.
8801
8802 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
8803
8804         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
8805         by the previous patch.
8806         
8807         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
8808         the assembly resolve handler for refonly assemblies.
8809
8810 2007-12-17  Mark Probst  <mark.probst@gmail.com>
8811
8812         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
8813         Make sure only one thread is allowed to commence shutdown, and
8814         don't allow new threads to be started once shutdown is in
8815         progress.
8816
8817 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
8818
8819         * verify.c (is_correct_endfilter): added.
8820
8821         * verify.c (is_unverifiable_endfilter): added.
8822
8823         * verify.c (do_endfilter): added.
8824
8825         * verify.c (mono_method_verify): property verification of endfilter
8826         and fixed a corner case or endfinally.
8827
8828 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
8829
8830         * verify.h: new flags to support fail fast of unverifiable code and
8831         do non-strict verification. Non-strict verification is required to
8832         have MS runtime compatibility. There are a huge amount of unverifiable
8833         code that it accepts as verifiable. The strict mode verifies the code
8834         as the specs says.
8835         Non-strict mode will be required in cases where code needs to be
8836         accepted as verifiable but fails under strict mode.
8837
8838         * pedump.c: added support to fail fast and non-strict verification.
8839
8840         * verify.c: added support for both fail fast and non-strict verification.
8841
8842 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
8843
8844         * verify.c (is_correct_endfinally): added.
8845
8846         * verify.c (mono_method_verify): property verification of endfinally.
8847
8848 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8849
8850         * verify.c (in_any_block): check for filter clauses.
8851
8852         * verify.c (is_correct_rethrow): added.
8853
8854         * verify.c (mono_method_verify): property verification of rethrow.
8855
8856         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
8857
8858 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8859
8860         * verify.c (do_throw): added.
8861
8862         * verify.c (mono_method_verify): property verification of throw
8863
8864 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
8865
8866         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
8867         assemblies. Fixes #346425.
8868
8869 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
8872         FieldBuilders.
8873
8874         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
8875
8876         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
8877         prevent asserts when this is called with a token which might not be valid.
8878
8879         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
8880         lookup_dynamic_token_class with valid_token == FALSE.
8881
8882         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
8883
8884         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
8885
8886         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8887         
8888 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8889
8890         * gc.c: Don't delay threadpool thread finalization unless Mono is
8891         shutting down.
8892
8893 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8894
8895         * threads.c: turn an assert into a non-fatal warning.
8896
8897 2007-12-09  Robert Jordan  <robertj@gmx.net>
8898
8899         * icall.c (GetVirtualMethod): Add missing argument validation.
8900
8901 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8902
8903         * verify.c (do_cast): added.
8904
8905         * verify.c (mono_method_verify): property verification of castclass and isinst.
8906
8907
8908 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8909
8910         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8911
8912         * verify.c (do_stelem): added.
8913
8914         * verify.c (mono_method_verify): property verification of stelem.X.
8915
8916 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8917
8918         * class.c, class-internals.h: Introduce an environment variable
8919         (MONO_GENERIC_SHARING) through which the extent of generic code
8920         sharing can be controlled (share all classes, share only corlib
8921         classes, or share nothing).
8922
8923         * object.c: Only create runtime generic context for classes for
8924         which sharing is enabled.
8925
8926 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8927
8928         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8929
8930         * verify.c (mono_method_verify): property verification of ldelem.any.
8931
8932 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8933
8934         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8935         added ldelem.X opcodes.
8936
8937         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8938
8939         * verify.c: proper verification of ldelem.X 
8940
8941 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8944
8945 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8946
8947         * verify.c (mono_method_verify): null literal requires special handling,
8948         the value pushed on stack need to be flagged as so.
8949
8950         * verify.c (do_ldelema): Verify ldelema properly.
8951
8952 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8953
8954         * verify.c: Verify ldlen properly.
8955
8956 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8957
8958         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8959         to the target object's type. Fixes #346160.
8960
8961 2007-12-05  Dick Porter  <dick@ximian.com>
8962
8963         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8964         Solaris needs the same workaround as BSD-derived systems.  Fixes
8965         bug 323524, patch by Burkhard Linke
8966         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8967
8968 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8969
8970         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8971         handle to use when error dialog is shown; otherwise, update mask
8972         to show no error dialog when an error occurs.
8973
8974 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8975
8976         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8977
8978         * class.c (mono_class_get_field_default_value): New helper function to initialize
8979         field->def_type and field->data.
8980
8981 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8982
8983         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8984         the general one.
8985
8986         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8987
8988         * marshal.c: Avoid depending on delegate->method_info being set.
8989
8990         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8991         
8992         * object.c (mono_delegate_ctor): Set delegate->method.
8993
8994         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8995
8996         * appdomain.c: Bump corlib version.
8997
8998 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8999
9000         * metadata.c (mono_generic_inst_equal_full): Short-circuit
9001         equality check if we're comparing canonicalized MonoGenericInsts.
9002
9003 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * class.c (generic_array_methods): Call mono_class_setup_methods () before
9006         accessing class->methods.
9007
9008 2007-11-22  Dick Porter  <dick@ximian.com>
9009
9010         * threads.c: Ensure that the synch_cs is set before trying to use
9011         it.
9012
9013 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
9014
9015         * profiler.c: r89126 broke the statistial profiler, unbreak.
9016
9017 2007-11-22  Martin Baulig  <martin@ximian.com>
9018
9019         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
9020
9021         * mono-debug.c
9022         (mono_debug_debugger_version): Bump to 3.
9023         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
9024         -> mono_debugger_class_initialized().
9025
9026         * mono-debug-debugger.c
9027         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
9028
9029         * class.c
9030         (mono_debugger_start_class_init_func): Removed.
9031         (mono_debugger_class_loaded_methods_func): Added.
9032         (mono_class_setup_methods): Call it here.
9033
9034 2007-11-22  Martin Baulig  <martin@ximian.com>
9035
9036         * mono-debug.c
9037         (mono_debug_add_delegate_trampoline): New public method.
9038         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
9039
9040         * mono-debug.h
9041         (MonoSymbolTable): Added `global_data_table'.
9042         (MonoDebuggerTypeKind): Removed.
9043
9044 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
9045
9046         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
9047         these methods.
9048
9049         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9050         
9051 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
9052
9053         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
9054
9055 2007-11-20  Martin Baulig  <martin@ximian.com>
9056
9057         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
9058
9059         * mono-debug-debugger.c
9060         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
9061         (mono_debugger_remove_breakpoint): Likewise.
9062         (mono_debugger_check_breakpoints): Likewise.
9063         (mono_debugger_register_class_init_callback): New public method.
9064         (mono_debugger_remove_class_init_callback): Likewise.
9065         (mono_debugger_add_type): Likewise.
9066
9067         * mono-debug-debugger.h
9068         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
9069
9070 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
9071
9072         * class.c: more interface implementations needed for the
9073         array enumerator (fixes bug #341112).
9074
9075 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
9076
9077         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
9078         fix ParamName of ArgumentNullExceptions.
9079
9080 2007-11-17  Miguel de Icaza  <miguel@novell.com>
9081
9082         * reflection.c (mono_reflection_encode_sighelper): Generate the
9083         modopts and modreqs.   I have a useless test that crashes monodis,
9084         but that shows the code working.
9085
9086 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
9089         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
9090
9091 2007-11-15  Dick Porter  <dick@ximian.com>
9092
9093         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
9094         When joining a thread, it's the thread that's calling Join that
9095         gets WaitSleepJoin state not the target.  Fixes the standalone
9096         test case in bug 334740, and hopefully the whole bug too.
9097
9098 2007-11-15  Dick Porter  <dick@ximian.com>
9099
9100         * process.c: Read file version info from the files pointed at by
9101         process modules, not the current process.  Fixes bug 315969.
9102
9103         Use windows typedef names in some places to fix warnings on the
9104         windows build.
9105
9106 2007-11-15  Mark Probst  <mark.probst@gmail.com>
9107
9108         * image.c, metadata-internals.h: Added a generic_class_cache hash
9109         to MonoImage for looking up generic classes when sharing generics.
9110
9111 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9112
9113         * sgen-gc.c: warning cleanups.
9114
9115 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
9116
9117         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
9118         inherited properties.
9119
9120 2007-11-14  Mark Probst  <mark.probst@gmail.com>
9121
9122         * object.c, class-internals.h: Added more information to the
9123         runtime generic context.
9124
9125 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
9128         instead of just the target method. Generalize the abstract method handling to
9129         handle any non-static method.
9130
9131         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
9132         mono_marshal_get_delegate_invoke () signature change.
9133
9134 2007-11-13  Mark Probst  <mark.probst@gmail.com>
9135
9136         * class.c, class-internals.h: Made
9137         mono_type_get_basic_type_from_generic () public.  Fixed member
9138         access check for shared generics.
9139
9140         * loader.c: Don't insert field into field cache if it's part of a
9141         non-inflated generic class.
9142
9143         * domain.c, domain-internals.h: The generic sharing context is now
9144         part of the jit info data structure.  Added two accessor
9145         functions.
9146
9147 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
9148
9149         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
9150         the array Get/Set/Address methods, since the JIT inlines them.
9151
9152         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
9153
9154         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
9155         (mono_image_init): Initialize runtime_invoke_direct_cache.      
9156
9157         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
9158         mono_marshal_get_delegate_invoke signature change.
9159
9160         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
9161         an additional argument. Add support for invoking abstract methods.
9162
9163         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
9164
9165         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
9166
9167 2007-11-09  Mark Probst  <mark.probst@gmail.com>
9168
9169         * class.c: Do field layout for open generic classes as well.
9170
9171 2007-11-09  Mark Probst  <mark.probst@gmail.com>
9172
9173         * gc.c, gc-internal.h: Don't finalize threadpool threads with
9174         other objects, because the threadpool is still around.  Put them
9175         in a list instead and after finalizing all other objects in the
9176         root domain shut down the thread pool and then finalize the
9177         threads.  Fixes bug #337383.
9178
9179         * threads.c, thread-types.h: New mono_thread_create_internal()
9180         function for marking a thread with the threadpool flag before it
9181         started.  Set synch_cs to NULL after freeing it.
9182
9183         * threadpool.c: Mark threadpool threads before they start.
9184
9185 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9186
9187         * reflection.h, reflection.c: don't export random functions
9188         and lazy load dbnull and missing objects.
9189
9190 2007-11-07  Jonathan Chambers <joncham@gmail.com>
9191
9192         * class.c: Initialize COM types if COM interfaces
9193         are present (not just COM classes).
9194         
9195         Code is contributed under MIT/X11 license.
9196
9197 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9198         * reflection.c:
9199         create_dynamic_mono_image: hook module profiler events (dynamic case).
9200         mono_image_basic_init: hook assembly profiler events (dynamic case).
9201
9202 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
9203         * profiler.c:
9204         simple_appdomain_unload: completely terminate the profiler
9205         instead of only processing the statistical samples.
9206         simple_shutdown: make sure this is really called exactly once,
9207         even in multithreaded applications, and always listen to
9208         appdomain events.
9209         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
9210         here, the "[un]load" functions will do it.
9211         Fixes bugs #333791 and #325261.
9212
9213 2007-11-07  Geoff Norton  <gnorton@novell.com>
9214
9215         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
9216         rather than depend on __APPLE__.
9217
9218 2007-11-07  Mark Probst  <mark.probst@gmail.com>
9219
9220         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
9221
9222 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
9223
9224         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
9225         UTF16 MonoString. Fix the crash from bug #335488
9226
9227 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
9228
9229         * marshal.c: Correct (for non-Win32 OS) length != size in 
9230         mono_string_from_bstr. Fix #339530.
9231
9232 2007-11-06  Geoff Norton  <gnorton@novell.com>
9233
9234         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
9235         to succeed
9236
9237 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
9238
9239         * process.c: Added run-time GetProcessId API detection for Windows.
9240
9241 2007-11-04  Miguel de Icaza  <miguel@novell.com>
9242
9243         * reflection.c  (mono_param_get_objects): If a parameter has the
9244         attribute [System.Runtime.InteropServices.Optional] we should
9245         set the DefaultValue of the ParameterInfo to be
9246         System.Reflection.Missing instead of DBNull.
9247
9248         See bug #339013.
9249
9250         (mono_get_reflection_missing_object): New method,
9251         returns the System.Reflection.Missing.Value singleton instance.
9252
9253 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
9254
9255         * culture-info-table.h : regenerated.
9256
9257 2007-11-02  Jonathan Chambers <joncham@gmail.com>
9258
9259         * icall.c: Use GetEnvironmentStrings on windows
9260         so we are using the same environment block as 
9261         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
9262         #333740.
9263         
9264         Code is contributed under MIT/X11 license.
9265
9266 2007-10-31  Martin Baulig  <martin@ximian.com>
9267
9268         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
9269
9270         * mono-debug-debugger.h
9271         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
9272
9273 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
9274
9275         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
9276         classes.
9277
9278 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
9279
9280         * culture-info-table.h : regenerated.
9281
9282 2007-10-30  Robert Jordan  <robertj@gmx.net>
9283
9284         * icall-def.h, icall.c:
9285         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
9286
9287         Code is contributed under MIT/X11 license.
9288
9289 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
9290
9291         * class.c (mono_class_setup_vtable): Find the inflated methods in the
9292         inflated class instead of inflating them again.
9293         
9294         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
9295         dynamic case.
9296
9297         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
9298         Call setup_supertypes () after klass->parent is set.
9299         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
9300
9301         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
9302         for inflated instances of not yet created dynamic generic classes.
9303         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
9304         times from inflated_method.
9305         (methodbuilder_to_mono_method): Ditto.
9306
9307 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
9308
9309         * gc.c: code cleanup and removed old untested option of not creating the
9310         finalizer thread.
9311
9312 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
9313
9314         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
9315         creating a jump trampoline for dynamic methods.
9316
9317 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
9318
9319         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
9320         generic TypeBuilders when called from another method of the same type (bug #335131).
9321
9322
9323 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
9324
9325         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
9326         doesn't seem to work perfectly.
9327         
9328         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
9329         called multiple times.
9330         (methodbuilder_to_mono_method): Ditto.
9331         (resolve_object): Inflate FieldBuilder's.
9332
9333 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9334
9335         * string-icalls.c, string-icalls.h, appdomain.c: patch from
9336         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
9337         RemoveEmptyEntries in the string.Split implementation (bug #322375).
9338
9339 2007-10-26  Dick Porter  <dick@ximian.com>
9340
9341         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
9342         Thread initialisation changes
9343
9344 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
9345
9346         * verify.c: fix compatibility check between arrays and System.Array
9347
9348 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
9349
9350         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
9351         too. Fixes #336999.
9352
9353 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
9354
9355         * object.c (mono_value_box): Use typed allocation here.
9356
9357 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
9358
9359         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
9360         trampoline instead of compiling the method right away.
9361
9362         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
9363
9364 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
9365
9366         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
9367         related fields for dynamic classes. Fixes #334493.
9368
9369 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
9370
9371         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
9372         
9373         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
9374
9375         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
9376         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
9377
9378         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
9379
9380         * reflection.c (create_generic_typespec): Initialize klass->generic_container
9381         if needed.
9382         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
9383
9384 2007-10-18  Jonathan Chambers <joncham@gmail.com>
9385
9386         * marshal.c: Use correct key when removing item
9387         from ccw_hash.
9388         
9389         Code is contributed under MIT/X11 license.
9390
9391 2007-10-17  William Holmes  <billholmes54@gmail.com>
9392
9393         *marshal.c: Adding a case to marshal booleans to U1
9394
9395         Code is contributed under MIT/X11 license.
9396
9397 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * class.c (mono_class_from_name): Search the modules compromising dynamic
9400         assemblies. Fixes #331601.
9401
9402 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
9403
9404         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
9405         exception if the type name contains an assembly component. Fixes #334203.
9406
9407         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
9408         modules inside dynamic assemblies. Fixes #334200.
9409         
9410         * reflection.c: Set image->public_key and image->public_key_length;
9411
9412         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
9413         fields.
9414
9415         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
9416         
9417 2007-10-16  Mark Probst  <mark.probst@gmail.com>
9418
9419         * metadata.c: Implemented correct comparing of generic classes.
9420         An inflated generic class can be equal to a non-inflated one if it
9421         is inflated with generic type variables as type arguments.  Fixes
9422         bug #333798.
9423
9424 2007-10-15  Dick Porter  <dick@ximian.com>
9425
9426         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
9427         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
9428         81646.
9429
9430         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
9431         instead of a monitor lock.  This means that monitor_try_enter and
9432         co can set the thread state safely.
9433         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
9434         thread_interrupt_requested, so interrupt actually works.
9435
9436         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
9437         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
9438         state accessor function
9439
9440 2007-10-15  Martin Baulig  <martin@ximian.com>
9441
9442         * mono-debug.h
9443         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
9444         the debugger with the current runtime.
9445
9446 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9447
9448         * object.c, object-internals.h: added the ability to set a single
9449         trampoline for all the slots in a vtable.
9450
9451 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9452
9453         * marshal.c: deal with a possible race condition during multicast
9454         delegate invocation.
9455
9456 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9457
9458         * class.c: ensure value type methods don't have the synchronized
9459         flag set.
9460
9461 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9462
9463         * string-icalls.c, string-icalls.h: reverted unapproved patch that
9464         breaks the build.
9465
9466 2007-10-11  Joel Reed  <joelwreed@comcast.com>
9467
9468         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
9469         to take an options parameter so that empty entries can be removed during
9470         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
9471
9472 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9473
9474         * marshal.c: make sure we don't store the signature from a dynamic
9475         method into the runtime invoke cache (bug #327189).
9476
9477 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9478
9479         * marshal.c: make sure the wrapper methods are properly initialized.
9480
9481 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9482
9483         * metadata.c, metadata-internals.h: Generalized
9484         mono_type_stack_size() to mono_type_stack_size_internal() which
9485         takes an additional argument specifying whether it allows open
9486         types.
9487
9488 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9489
9490         * verify.c (do_invoke_method): handle typedbyref params
9491         correctly and check for unverifiable return values.
9492
9493         * verify.c (do_newobj): fix a warning.
9494
9495 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         * verify.c: don't tread typedbyref as allways unverifable,
9498         so uses, like (ld/st)loc.0 are valid. verify for the cases
9499         that it matters, like boxing related operations.
9500
9501 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9502
9503         * verify.c: add verification of the newobj opcode. verification
9504         of delegate instantation still missing due ldftn and virldftn not
9505         pushing the function type on stack
9506
9507 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9508
9509         * class-internals.h: Runtime generic context data structure
9510         definition.
9511
9512         * object.c: Initialization of runtime generic context at runtime
9513         vtable creation time.
9514
9515 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
9516         * class.c (mono_class_create_from_typedef,
9517         mono_class_from_generic_parameter, mono_ptr_class_get,
9518         mono_fnptr_class_get, mono_bounded_array_class_get)
9519         * domain.c (mono_domain_create, mono_domain_free)
9520         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
9521         * image.c (do_mono_image_load, mono_image_close):
9522         Hooked up load-unload profiler events.
9523
9524 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9525
9526         * domain.c: track statistics about the actual amount of native code
9527         allocated.
9528
9529 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9530
9531         * class.c: the valuetype enumerators don't have the additional
9532         supertypes interfaces.
9533
9534 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9535
9536         * class.c: need more interfaces setup for the IEnumerator<T>
9537         object created for arrays (tests/ienumerator-interfaces.2.cs).
9538
9539 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
9540
9541         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
9542
9543 2007-10-05  Alp Toker  <alp@atoker.com>
9544
9545         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
9546         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
9547         #315863.
9548
9549 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
9550
9551         * verify.c (verify_type_compatibility_full): verification of
9552         compatibility improved, validates correctly non-strict checks between
9553         native int and I4 types different than (unsigned)int32.
9554
9555         * verify.c (do_store_indirect): added, do all verification of
9556         ldind.X opcodes. 
9557
9558         * verify.c (get_load_indirect_mono_type): renamed to
9559         get_indirect_op_mono_type, as it now returns the MonoType for 
9560         ldind.X and stind.X opcodes.
9561
9562 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
9563
9564         * reflection.c: Fix the encoding of generic type definition for
9565         TypeBuilders.
9566
9567         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
9568         mono_image_typedef_or_ref but allows to specify if typespec lookups should
9569         be made. Typespec check is done prior to typeref cache lookup.
9570
9571         * reflection.c (mono_image_typedef_or_ref): now just delegate to
9572         mono_image_typedef_or_ref_full.
9573
9574         * reflection.c (encode_generic_class): encode the generic class
9575         directly instead of calling encode_type.
9576
9577         * reflection.c (encode_type): encode the generic type definition
9578         MonoClass as a generic instantiation.
9579
9580         * reflection.c (create_typespec): cache typespec tokens in
9581         the assembly->typespec cache. Don't create typespec for a generic
9582         instance MonoClass. Create typespec for the generic type defintion.
9583
9584         * reflection.c (create_generic_typespec): encode the generic
9585         class directly instead of calling encode_type.
9586
9587         * reflection.c (mono_image_create_token): encode the generic
9588         type definition not using a typespec for MonoType instances.
9589
9590
9591 2007-10-04  Raja R Harinath  <rharinath@novell.com>
9592
9593         Fix #328812
9594         * class.c (mono_image_init_name_cache): Don't return nested
9595         'protected internal' classes.
9596         (mono_class_from_name_case): Likewise.
9597
9598 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
9599
9600         * icall-def.h, icall.c : get_bundled_machine_config() is now the
9601           common function used by both DefaultConfig in System.dll and
9602           InternalConfigurationHost in System.Configuration.dll.
9603
9604 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9605
9606         * class.c: automatically add to vectors only a few essential explicit
9607         generic interfaces. The rest of the interfaces that arrays should
9608         provide are currently implicitly added (but still not lazily, see the
9609         design in the discussion of bug#325495 for the details of what is
9610         needed for that). Additionally, implicit interfaces are assigned the
9611         same vtable slot as the explicit interfaces (as they are compatible):
9612         this enables huge memory savings since we don't need to instantiate
9613         as many memthods and as large vtables anymore. Also, Since
9614         GetEnumerator<T> returns an instance of a type that is required to
9615         support a similarly large set of interfaces as arrays, we add
9616         implicit interfaces and interface offset sharing support to those
9617         types, too. This change adds all the required interfaces so that
9618         the anonarray.cs test case in the bug report works (we don't add
9619         all the interfaces to arrays of arrays 3-level deep and more because
9620         of the memory requirements explained in the bug and since they are much
9621         less common: the lazy-loading support will enabled them to work, too).
9622
9623 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
9624
9625         * verify.c (merge_stacks): major clean up, all type compatibility
9626         checks are done by verify_type_compatibility. This fix my earlier lack
9627         of understanding of the CLR type system and merge_stacks no longer looks
9628         scary.
9629
9630         * verify.c: fixed some bad spelling.
9631
9632 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
9633
9634         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
9635         a given stack slock.
9636         
9637         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
9638         verify_type_compatibility_full. This removed a near indentical function and fixed
9639         handling of Int32 and IntPtr across all opcodes.
9640
9641 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9642
9643         * class.c: only vectors have the additional generic interfaces.
9644
9645 2007-10-01  Jonathan Chambers <joncham@gmail.com>
9646
9647         * mono-config.c: Use g_strcasecmp instead of
9648         strcasecmp like everywhere else to fix
9649         compilation with MSVC.
9650         
9651         Code is contributed under MIT/X11 license.
9652
9653 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9654
9655         * object.c, object-internals.h: refactored the IMT code to enable
9656         building a single slot at a time and lazily creating the IMT trampolines
9657         and thunks.
9658
9659 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
9662
9663         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
9664         Fixes #328501.
9665         
9666 2007-09-29  Raja R Harinath  <harinath@gmail.com>
9667
9668         * loader.c (method_from_methodspec): Rearrange to avoid
9669         un-necessary exposition.  Don't assert out if the method's
9670         declaring type is a generic type definition.
9671
9672 2007-09-28  Martin Baulig  <martin@ximian.com>
9673
9674         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
9675
9676 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9677
9678         * class-internals.h: optimize field layout of MonoClass to
9679         requires less cachelines at runtime and save a few bytes on 64 bit
9680         systems.
9681
9682 2007-09-28  Jb Evain  <jbevain@novell.com>
9683
9684         * reflection.c: when encoding type names in custom attributes,
9685         if the type is a closed generic type, its generic arguments
9686         have to be serialized as AssemblyQualifiedName, so that when
9687         they are deserialized, it's possible to re-create them properly.
9688         Fixes #329450.
9689
9690
9691 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9692
9693         * object.c, class-internals.h: added delegate-creation counter.
9694
9695 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9696
9697         * class.c: cleanup of the code that synthetizes interfaces for
9698         arrays in 2.0: saves quit a bit of corlib mempool memory.
9699         Code to fix bug #325495 ifdeffed out for now until the issues
9700         with memory usage and O(n^2) behaviour are fixed.
9701
9702 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9703
9704         * marshal.c: when possible, do not duplicate the name of the methods
9705         in the method builder and in the generated MonoMethod.
9706
9707 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9708         * verify.c: added support for type checking ldind_* opcodes.
9709
9710 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9711
9712         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
9713         which is used to distinguish the fully open instantiation of a TypeBuilder
9714         with the rest. This temporary hack is required to restore the property that
9715         the fully open instantiation is the same type of the generic type definition.
9716
9717         * class-internals.h (mono_generic_class_is_generic_type_definition):
9718         new function as part of the internal API.
9719
9720         * class.c (inflate_generic_type): return NULL when the generic inst is
9721         fully open. The fully open generic type is now the same as the generic type
9722         definition for non TypeBuilder types.
9723
9724         * class.c (mono_generic_class_get_class): removed assert since it is
9725         no longer valid, gklass->cached_class can point to the generic type definition.
9726
9727         * class.c (mono_generic_class_is_generic_type_definition): new.
9728
9729         * metadata.c (mono_generic_class_hash): added is_tb_open field
9730         to the hash calculation.
9731
9732         * metadata.c (free_generic_class): if the generic class is associated
9733         with the generic type definition, its field will come from the mempool and
9734         must not be freed.
9735
9736         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
9737         new, this function identifies the corner case of a TypeBuilder fully open
9738         instantiation.
9739
9740         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
9741         for lookup. Set gclass->cached_class to be the container class in case of
9742         the fully open instantiation of non TypeBuilder types.
9743
9744         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
9745         to compare generic classes.
9746
9747         * reflection.c (method_encode_methodspec): remove assert that
9748         no longer is valid.
9749
9750         * reflection.c (mono_reflection_generic_class_initialize): add
9751         an aditional assert to ensure the proper type is used.
9752
9753 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
9754
9755         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
9756         to enjoy it.
9757
9758 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9759
9760         * verify.c (push_arg): Fixed support for ldarga
9761         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
9762         MonoType used as first arg in case of instance calls.
9763
9764 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9765
9766         * verify.c: Support for verifying VAR and MVAR types, 
9767
9768 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
9769
9770         * icall.c (ves_icall_get_property_info): Set the reflected type of the
9771         accessors correctly.
9772
9773 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9774
9775         * threads.c: support OSX and other systems in
9776         mono_thread_get_stack_bounds (bug #328026).
9777
9778 2007-09-25  Martin Baulig  <martin@ximian.com>
9779
9780         * mono-debug.h
9781         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
9782
9783 2007-09-24  Martin Baulig  <martin@ximian.com>
9784
9785         * mono-debug.h
9786         (MonoDebugClassEntry): Moved the definition of this struct into
9787         mono-debug.c to make it private.
9788
9789         * mono-debug.c
9790         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
9791         type table per symbol file, we don't need to store the symfile id
9792         any longer.
9793
9794 2007-09-24  Martin Baulig  <martin@ximian.com>
9795
9796         Create one type table per symbol file, since a `MonoClass *' gets
9797         invalid when its image is unloaded.
9798
9799         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
9800         (MonoDebugHandle): Added `type_table'.
9801
9802 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9803
9804         * mempool.c, mempool.h: added mono_mempool_new_size () API
9805         to be able to specify a smaller initial size for the pool.
9806         Adjusted the code to slowly increase pool size before using
9807         the previous default size.
9808         * image.c: use a small initial size for image mempools.
9809
9810 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
9811
9812         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
9813         Fixes ##320990.
9814
9815         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
9816         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
9817
9818 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
9819
9820         * metadata.c (mono_type_create_from_typespec): Remove an invalid
9821         free. Fixes #327438.
9822
9823 2007-09-21  Raja R Harinath  <harinath@gmail.com>
9824
9825         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
9826         generic instantiations, etc.
9827         <MONO_TYPE_ARRAY>: Likewise.
9828
9829 2007-09-21  Martin Baulig  <martin@ximian.com>
9830
9831         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
9832         these structs were never defined.
9833         (MonoDebugHandle): Removed the `_priv' field, it was never used.
9834
9835 2007-09-21  Martin Baulig  <martin@ximian.com>
9836
9837         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
9838
9839 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
9840
9841         * image.c: removed the guid hash tables: we can get the same info
9842         without the additional memory usage hit (partially fixes also bug #327052).
9843
9844 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9845
9846         * profiler.h, profiler-private.h, profiler.c: add a new profiler
9847         event to handle unloading methods. After the event is called, the
9848         corresponding MonoMethod* must be considered invalid.
9849         * loader.c (mono_free_method): call the new mono_profiler_method_free
9850         event.
9851
9852 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9853
9854         * domain-internals.h: New flag in MonoJitInfo which marks shared
9855         generic methods.  New hash table (shared_generics_hash) in
9856         MonoDomain to keep track of shared generic methods.  Prototypes
9857         for functions to register and lookup shared generic methods.
9858
9859         * domain.c: Support for registering and looking up shared generic
9860         methods via a hash table (shared_generics_hash) in MonoDomain.
9861
9862         * class-internals.h: New exception to signal failure of shared
9863         compilation of a generic method.  New counters for generics
9864         sharing in MonoStats.
9865
9866 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9867
9868         * image.c, metadata-internals.h: don't keep a file descriptor open
9869         for loaded assemblies (bug#325988).
9870
9871 2007-09-19  Raja R Harinath  <rharinath@novell.com>
9872
9873         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
9874         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
9875         use the corresponding datatypes.
9876         (type_in_image): Update to changes.
9877         (CleanForImageUserData): Simplify.
9878         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
9879         Avoid quadratic behaviour in handling the "stolen" list by
9880         separating the filter predicate out, and by prepending the stolen
9881         items rather than appending them.
9882         (steal_ginst_in_image): Likewise.
9883         (mono_metadata_clean_for_image): Update to changes.
9884
9885 2007-09-19  Martin Baulig  <martin@ximian.com>
9886
9887         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
9888
9889 2007-09-19  Martin Baulig  <martin@ximian.com>
9890
9891         * mono-debug.c (mono_debug_cleanup): Don't call
9892         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9893
9894 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9895
9896         Fix crash on 'make run-test' in mcs/errors
9897         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9898         Avoid more potential allocations in mono_class_from_mono_type.
9899         (ginst_in_image): Update to changes.
9900         (gclass_in_image): Rearrange slightly.
9901
9902 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9903
9904         * class.c (mono_class_init): Move the code that sets up class->methods to 
9905         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9906
9907         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9908         canonical instance of an inflated generic signature.
9909         (mono_type_create_from_typespec): Remove an invalid free.
9910
9911         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9912
9913 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9914
9915         * domain-internals.h: added a declaration of the
9916         mono_assembly_load_full_nosearch internal function.
9917
9918         * assembly.c (mono_assembly_load_with_partial_name): use
9919         mono_try_assembly_resolve return value properly.
9920         (mono_assembly_load_full_nosearch): copied the function body from
9921         mono_assembly_load_full, without the code to invoke assembly
9922         search hooks.
9923         (mono_assembly_load_full): calls the above new function and if the
9924         assembly is not resolved, invokes the search hooks.
9925
9926         * appdomain.c (mono_runtime_init): restore the global postload
9927         assembly search handlers.
9928
9929 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * class.c (mono_class_init): Make sure class->methods and class->properties
9932         are never NULL in the generics case.
9933
9934         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9935
9936 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9937
9938         * metadata.c (free_generic_class): Disable some code to fix the build.
9939
9940         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9941
9942         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9943         from the image mempool.
9944
9945         * metadata.c (free_generic_class): Free more data from the inflated class.
9946
9947         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9948
9949         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9950         mempool.
9951         (mono_type_create_from_typespec): Ditto.
9952
9953         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9954         MonoImage to the caller.
9955         (mono_init_internal): Save the opened image in a global variable.
9956         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9957
9958         * reflection.c (resolve_object): Fix a leak.
9959
9960         * metadata.c: Fix the freeing of data in the generics caches.
9961         
9962         * metadata.c (free_generic_inst): Comment this out to fix the build.
9963         (free_generic_class): Ditto.
9964
9965         * metadata.c: Free cached generic methods, instantinations and classes when
9966         they are removed from the caches.
9967         (mono_metadata_free_type): Free the type itself.
9968
9969         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9970         places.
9971
9972 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9973
9974         * boehm-gc.c: restrict managed allocs to __thread supporting
9975         architectures.
9976
9977 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9978
9979         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9980         (mono_generic_class_get_class): Fix a leak.
9981
9982         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9983         mono_metadata_free_type ().
9984         (mono_metadata_inflate_generic_inst): Fix a leak.
9985
9986 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9987
9988         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9989
9990         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9991         mempool.
9992
9993         * mono-debug.c (mono_debug_close_image): Fix call to 
9994         g_hash_table_remove ().
9995
9996 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9997
9998         * icall-def.h: redirect all the string ctor to the managed
9999         CreateString () methods.
10000         * string-icalls.c, string-icalls.h: removed dead code for string
10001         ctors and icalls.
10002
10003 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10004
10005         * mono-debug.c: Fix memory leaks.
10006
10007 2007-09-14  Jonathan Chambers <joncham@gmail.com>
10008
10009         * threads-types.h: Implement mono_hazard_pointer_set and 
10010         mono_hazard_pointer_clear macros using do/while(0) to fix
10011         compilation with MSVC.
10012         
10013         Code is contributed under MIT/X11 license.
10014
10015 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
10016
10017         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
10018         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
10019
10020 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10021
10022         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
10023         icalls.
10024
10025 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10026
10027         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
10028         managed-code allocated as well.
10029
10030 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10031
10032         * class.c (mono_class_is_assignable_from): Add support for generic variance.
10033
10034 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
10035
10036         * boehm-gc.c: fixed the build after the AOT changes.
10037
10038 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
10039
10040         * wrapper-types.h: Add an ALLOC wrapper type.
10041
10042         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
10043         reference managed allocator methods.
10044
10045 2007-09-12  Marek Safar  <marek.safar@gmail.com>
10046
10047         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
10048         of Type array and not MonoType, a fix suggested by Hari.
10049         
10050 2007-09-12  Jonathan Chambers <joncham@gmail.com>
10051
10052         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
10053         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
10054         
10055         Code is contributed under MIT/X11 license.
10056
10057 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
10058
10059         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
10060
10061 2007-09-12  Marek Habersack  <mhabersack@novell.com>
10062
10063         * image.c (do_mono_image_open): if assembly file fails to open and
10064         MONO_IOMAP is in effect, try to find the path in a
10065         case-insensitive way.
10066
10067         * appdomain.c (mono_runtime_init): do not install postload hooks -
10068         tests show that MS.NET doesn't use anything of that sort to
10069         trigger the AppDomain.AssemblyResolve event.
10070         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
10071         made non-static.
10072         (mono_runtime_init): init portability helpers here.
10073
10074         * assembly.c (mono_assembly_load_with_partial_name): if other   
10075         attempts fail, trigger the AppDomain.AssemblyResolve event handler
10076         to resolve the assembly.
10077
10078         * domain-internals.h: added mono_try_assembly_resolve and marked
10079         it as internal.
10080
10081 2007-09-11  Jb Evain  <jbevain@novell.com>
10082
10083         * object-internals.h (MonoReflectionDynamicMethod): add
10084         a `MonoReflectionType *owner` field. The owner is used
10085         * reflection.c:
10086         (mono_reflection_create_dynamic_method): use the owner of the dynamic
10087         method as the class declaring the dynamic method.
10088         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
10089         dynamic method to the declaring type of the methodbuilder.
10090
10091 2007-09-11  Mark Probst  <mark.probst@gmail.com>
10092
10093         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
10094         rules for calling methods via reflection.
10095
10096 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
10097
10098         * reflection.c (resolve_object): Add support for MonoGenericClass. 
10099         Inflate MonoType's.
10100
10101 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
10102
10103         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
10104         provide a managed method that does fast allocations without needing
10105         a managed->unmanaged transition. Boehm GC implementation currently
10106         enabled for ptrfree objects on sane architectures.
10107
10108 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
10109
10110         * marshal.c, marshal.h: exported a couple of useful functions and
10111         added mono_mb_get_label () to easily handle backward branches.
10112
10113 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
10116
10117 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
10118
10119         * loader.c (find_method): Fixed the regression introduced while
10120         fixing bug #81466.
10121
10122 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
10123
10124         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
10125         well.
10126         
10127         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
10128         icall.c reflection.c: Pass a MonoGenericContext argument to 
10129         mono_lookup_dynamic_token ().
10130
10131         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
10132         #82744.
10133         
10134 2007-09-09  Robert Jordan  <robertj@gmx.net>
10135
10136         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
10137         for generic methods.
10138
10139         * object.c (mono_object_get_virtual_method): Handle generic methods.
10140         Fixes bug #78882.
10141
10142         Code is contributed under MIT/X11 license.
10143
10144 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10145
10146         * image.c: fix locking in mono_image_load_file_for_image ().
10147
10148 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
10149
10150         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
10151         used only as a cache: added an icall to fill it.
10152
10153 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
10154
10155         * reflection.h: exposed mono_reflection_free_type_info
10156         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
10157         since mono_reflection_bind_generic_parameters makes a copy of it.
10158         * reflection.c (free_type_info): subinfos should be freed.
10159         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
10160         made non static.
10161         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
10162         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
10163         this fixes #82695 and #81726.
10164    
10165
10166 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
10167
10168         * process.h, process.c:  added support for user profile/info in
10169           ProcessStartInfo. For now only Windows works.
10170
10171 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10172
10173         * metadata.c: consider the generic arguments when comparing
10174         signatures (bug #82614).
10175
10176 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10177
10178         * cil-coff.h, image.c: updated assembly loader to cope with the
10179         PE32+ 64 bit file format.
10180
10181 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10182
10183         * assembly.c, class.c, domain.c, loader.c: remove useless
10184         inclusion of cil-coff.h.
10185
10186 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
10187
10188         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
10189         if interface is marked with CoClassAttribute. 
10190    
10191         Code is contributed under MIT/X11 license.
10192
10193 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10194
10195         * sgen-gc.c: ensure no object from the to space is copied again or finalized
10196         if it's seen twice in major collections.
10197
10198 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
10199
10200         * sgen-gc.c: big objects are not copied to the gray area, but they
10201         need to be considered for scanning, too, if they are brought alive
10202         by an object ready for finalizations or a survived one.
10203
10204 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10205
10206         * sgen-gc.c: properly account the number of disappearing links when
10207         they are nullified.
10208
10209 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
10210
10211         * sgen-gc.c: share the code to scan the registered roots between the
10212         different types of collections.
10213
10214 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
10217
10218 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
10219
10220         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
10221         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
10222
10223 2007-08-28  Mark Probst  <mark.probst@gmail.com>
10224
10225         * security-manager.c (mono_security_manager_get_methods):
10226         LinkDemandSecurityException now has 2 arguments instead of 3.
10227
10228 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
10231         platforms which need it.
10232
10233 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10234
10235         * sgen-gc.c: unregister thread data structures with a pthread_key_t
10236         dtor.
10237
10238 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
10239
10240         * threads.c: free the thread static data on thread exit.
10241
10242 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
10243
10244         * class.c: walk the hierarchy to find the generic definition for
10245         a class (fixes runtime part of bug #82498).
10246
10247 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
10250         ...
10251
10252         * image.c (mono_image_close): Here. Hopefully fixes #82510.
10253
10254 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10255
10256         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
10257
10258 2007-08-24  Robert Jordan  <robertj@gmx.net>
10259
10260         * appdomain.c: don't perform the ':'->';' substitution on Win32.
10261
10262 2007-08-24  Jb Evain  <jbevain@novell.com>
10263
10264         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
10265         for byref types.
10266
10267 2007-08-24  Mark Probst  <mark.probst@gmail.com>
10268
10269         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
10270         #82286.
10271
10272 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
10273
10274         * assembly.c: Fix a warning.
10275         
10276 2007-08-23  Marek Habersack  <mhabersack@novell.com>
10277
10278         * appdomain.c: parse the <runtime> section looking for the probing
10279         element with the 'privatePath' attribute, which sets additional
10280         directories in which the runtime should look for assemblies.
10281
10282 2007-08-23  Robert Jordan  <robertj@gmx.net>
10283
10284         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
10285         Fixes #82499.
10286
10287 2007-08-23  Martin Baulig  <martin@ximian.com>
10288
10289         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
10290         _mono_debug_init_corlib() and remove it from the header file.
10291
10292 2007-08-23  Martin Baulig  <martin@ximian.com>
10293
10294         * mono-debug-debugger.c
10295         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
10296         don't notify the debugger about it.
10297
10298         * mono-debug-debugger.h
10299         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
10300
10301 2007-08-23  Robert Jordan  <robertj@gmx.net>
10302
10303         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
10304         Code is contributed under MIT/X11 license.
10305
10306 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10307
10308         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
10309
10310 2007-08-22  Martin Baulig  <martin@ximian.com>
10311
10312         * mono-debug.c: Store debugging info on a per-domain basis and
10313         free it on domain unload.  Add support for unloading symbol files.
10314
10315         * mono-debug.h
10316         (MonoDebugList): New typedef.
10317         (MonoSymbolTable):
10318         - add `data_tables and `type_table'.
10319         - replace 'symbol_files' and `num_symbol_files' with a
10320           `MonoDebugList *'.
10321         (mono_debug_data_table): Removed.
10322         (mono_debug_list_add): New public function.
10323         (mono_debug_list_remove): New public function.
10324         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
10325         (mono_debug_init_2_memory): Renamed into
10326         mono_debug_open_image_from_memory().
10327         (mono_debug_close_image): New public function.
10328         (mono_debug_domain_create): Likewise.
10329         (mono_debug_domain_unload): Likewise.
10330         (MONO_DEBUGGER_VERSION): Bump to 60.
10331
10332         * mono-debug-debugger.h
10333         (MonoDebuggerEvent):
10334         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
10335         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
10336         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
10337         - rename `THREAD_CREATED' and `THREAD_EXITED' into
10338           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
10339         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
10340           meaning.
10341         (mono_debugger_add_symbol_file): Removed.
10342         (mono_debugger_add_type): Removed.
10343         (mono_debugger_lookup_type): Removed.
10344         (mono_debugger_lookup_assembly): Removed.
10345
10346         * domain.c
10347         (mono_domain_create): Call mono_debug_domain_create().
10348         (mono_init_internal): Call mono_debug_init_corlib().
10349
10350         * assembly.c
10351         (mono_assembly_close): Call mono_debug_close_image().
10352
10353 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
10354
10355         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
10356         mmap call.
10357
10358 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10359
10360         * sgen-gc.c: ensure section->pin_queue_end is initialized
10361         correctly when non pinning objects in the section have been found.
10362
10363 2007-08-22  Marek Habersack  <mhabersack@novell.com>
10364
10365         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
10366         containing a list of directories separated by ':'. MSDN docs say
10367         the directories should be separated with ';'. Part of a bugfix for
10368         bug #81446
10369
10370 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
10371
10372         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
10373         it should MonoType and not MonoClass.
10374
10375 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
10376
10377         * culture-info-table.h : regenerated.
10378
10379 2007-08-20  William Holmes  <billholmes54@gmail.com>
10380
10381         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
10382          to call ReplaceFile Kernel32 on windows or in io-layer.
10383         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
10384         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
10385          as an internal call.
10386
10387         Code is contributed under MIT/X11 license.
10388
10389 2007-08-20  Jb Evain  <jbevain@novell.com>
10390
10391         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
10392         and MONO_EXCEPTION_FIELD_ACCESS.
10393
10394         * debug-helpers.[c|h]: new mono_field_full_name function.
10395
10396 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10397
10398         * class.c: Removed class_security_level() and moved it to
10399         security-core-clr.c.
10400
10401         * security-core-clr.c, security-core-clr.h: class_security_level()
10402         is now public and renamed to mono_security_core_clr_class_level().
10403         It also looks for security attributes in the classes a class is
10404         nested in.
10405
10406 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10407
10408         * security-core-clr.c, security-core-clr.h: CoreCLR security
10409         utility functions.
10410
10411         * Makefile.am: Added security-core-clr.[ch].
10412
10413         * security-manager.c, security-manager.h: Functions and enum for
10414         setting and getting the security mode.
10415
10416         * class.c: CoreCLR security checks.
10417
10418 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10419
10420         * icall-def.h, process.c, process.h: implemented icall to get
10421         user/system processor times.
10422
10423 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10424
10425         * domain.c, threads.c, class-internals.h, domain-internals.h: New
10426         reader-lock-free jit_info_table.
10427
10428 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
10431
10432         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
10433
10434         * object-internals.h (MonoException): Add missing _data member.
10435
10436 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
10437
10438         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
10439         checking that only methods with matching qname or fqname are picked
10440         from implemented interfaces.
10441
10442 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
10443
10444         * verify.c (do_newarr):added, do type verification of
10445         newarr ops, push the right value on the eval stack.
10446         * verify.c (mono_method_verify): use do_newarr
10447
10448
10449 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
10450
10451         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
10452         factored the common code into get_boxable_mono_type, which
10453         is now using mono_type_get_full, this fixed byref related tests.
10454
10455 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
10456
10457         * class.c: added mono_type_get_full, this function has the same
10458         behavior of mono_class_get_full but the returned MonoType has
10459         all metadata of the associated token in case of a typespec token.
10460         * class.c: added mono_type_retrieve_from_typespec, used by 
10461         mono_type_get_full to retrieve the token type.
10462         * class.c (mono_class_create_from_typespec): changed to use
10463         mono_type_retrieve_from_typespec.
10464         * class.c (mono_ldtoken): changed to use mono_type_get_full
10465         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
10466         * class-internals.h: exported mono_type_get_full for internal use.
10467
10468 2007-08-16  Jb Evain  <jbevain@novell.com>
10469
10470         * domain.c (supported_runtimes): add entry for
10471         the 'moonlight' runtime version.
10472
10473 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10474
10475         * verify.c (mono_method_verify): small typo sliped in.  
10476
10477 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10478
10479         * verify.c (do_unbox_value): added, do type verification of
10480         unboxing ops
10481         * verify.c (mono_method_verify): use do_unbox_value
10482
10483
10484 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10485
10486         * verify.c (dump_stack_value): fixed typo, was printing string
10487         instead of object on stack.
10488         * verify.c (do_box_value): moved the byref check up as it leads
10489         to invalid code and should be done earlier.
10490         * verify.c: improved error messages for and ldobj
10491
10492 2007-08-15  William Holmes  <billholmes54@gmail.com>
10493
10494         * marshal.c (emit_marshal_custom): Omit the call to 
10495           marshal_native_to_managed when calling native to managed 
10496           and the argument is specified as an out argument.
10497
10498         Code is contributed under MIT/X11 license.
10499
10500 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10501
10502         * verify.c: fixed the type checks for generics, function pointers and vectors.
10503         Added type verification for ldobj and ldtoken. The verifier
10504         would segfault if header or signature of a method contained references
10505         to non-existant types.
10506
10507 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
10508
10509         * marshal.c (cominterop_get_ccw): Patch from
10510         Bill Holmes to no walk up interface hierarchy. 
10511         All parent methods should be present in the interface for COM.
10512    
10513         Code is contributed under MIT/X11 license.
10514
10515 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
10516
10517         * marshal.c (emit_marshal_com_interface): Patch from
10518         Bill Holmes to handle COM Interfaces as return values
10519         for native->managed calls.
10520    
10521         Code is contributed under MIT/X11 license.
10522
10523 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
10524
10525         * marshal.c (cominterop_get_idispatch_for_object): Implement
10526         for runtime callable wrappers.
10527    
10528         Code is contributed under MIT/X11 license.
10529
10530 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
10531
10532         * pedump.c (main): changed from mono_init to mono_init_from_assembly
10533         so 2.0 types are accessible
10534
10535
10536 2007-08-13  Miguel de Icaza  <miguel@novell.com>
10537
10538         * domain.c (mono_init_internal): Call mono_assembly_load_friends
10539         once we load mscorlib.   Due to the order in which we initialize,
10540         the mono_assembly_load_full routine that loads mscorlib did not
10541         load friends.   We now load it once we load the
10542         mono_defaults.internals_visible_class class. 
10543
10544         * assembly.c: Expose the mono_load_friend_assemblies method.
10545
10546 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
10547
10548         * verify.c: improved the handling of boxing, better
10549         type checking for unary ops and conversion. Fix bug
10550         regarding managed pointer compatibility checking
10551
10552 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
10555
10556         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
10557
10558 2007-08-09  Raja R Harinath  <rharinath@novell.com>
10559
10560         * reflection.c (dup_type): Remove.
10561         * class.c (dup_type): Remove.
10562         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
10563         instead of the dodgy 'dup_type'.
10564         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
10565         handle the case where 'dup_type' needed the second argument.
10566
10567 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * domain.c: Fix a warning.
10570
10571 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
10572
10573         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
10574         checking that methods with the same fqname are not overridden
10575         with a method from an ancestor.
10576
10577 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * threads.c (free_thread_static_data_helper): Avoid a crash if
10580         thread->static_data is not yet set.
10581
10582 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
10583
10584         * marshal.c: Use correct image when emitting
10585         native wrapper for COM calls.
10586    
10587         Code is contributed under MIT/X11 license.
10588
10589 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
10590
10591         * icall-def.h, security.c, security.h :
10592           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
10593
10594 2007-08-07  Martin Baulig  <martin@ximian.com>
10595
10596         * mono-debug-debugger.h
10597         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
10598
10599         * domain.c (mono_domain_free): Call
10600         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
10601
10602 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10603
10604         * verify.c (check_underflow, check_overflow): error message now returns IL offset
10605         * verify.c (in_same_block): code should test if either offset is inside the clauses
10606         * verify.c (mono_method_verify): push the exception into the eval stack of exception
10607         and filter blocks
10608
10609 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * image.c (mono_image_close): Fix a leak.
10612
10613         * object.c (mono_runtime_invoke_array): Avoid using alloca.
10614
10615         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
10616
10617 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10618
10619         * domain.c, threads.c, threads-types.h: fix memory retention issue
10620         with thread static variables not being cleared on domain unload.
10621         Reuse thread static slots after domain unload.
10622
10623 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
10624
10625         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
10626         nullable type.
10627
10628         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
10629         now done in mono_runtime_invoke_array.
10630
10631         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
10632         receiver is a nullable type.
10633
10634         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
10635         generic parameter.
10636
10637 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
10638
10639         * marshal.c: Implement COM Objects as return type for 
10640         managed->unmanaged calls. Added Release calls for COM Object
10641         out/return values in managed->unmanaged calls.
10642
10643         Code is contributed under MIT/X11 license.
10644
10645 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10646
10647         * threads.h, threads-type.h: move the hazard pointer declarations
10648         to the private header.
10649
10650 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10651
10652         * file-io.c, appdomain.c: memory leak fixes.
10653
10654 2007-08-02  Dick Porter  <dick@ximian.com>
10655
10656         * socket-io.c
10657         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
10658         SO_REUSEADDR setting into io-layer/sockets.c.
10659
10660 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10661
10662         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
10663         from Object when called on a generic parameter. Fixes #82211.
10664
10665 2007-08-01  Dick Porter  <dick@ximian.com>
10666
10667         * file-io.c (convert_share): Test FileShare values bit-by-bit.
10668         Fixes bug 79250 yet again.
10669
10670 2007-07-30  Martin Baulig  <martin@ximian.com>
10671
10672         Merged the `debugger-dublin' branch.
10673
10674         * mono-debug.h
10675         (MonoDebugDataTable): New typedef.
10676         (MonoDebugMethodAddressList): New typedef.
10677         (MonoDebugWrapperData): Removed.
10678         (MonoDebugSymbolTable): Removed `current_data_table',
10679         `current_data_table_size', `current_data_table_offset'.
10680         (MonoDebugDataItemType): Moved into mono-debug.c.
10681         (MonoDebugMethodJitInfo): Remove `address'.
10682         (mono_debug_data_table): New global variable.
10683         (mono_debug_lookup_method_addresses): New public function.
10684         (mono_debug_find_method): Take a `MonoMethod *', not a
10685         `MonoDebugMethodInfo *'.
10686
10687         * mono-debug.c: Drop support for the old symbol tables.
10688
10689 2007-06-28  Martin Baulig  <martin@ximian.com>
10690
10691         * mono-debug.c (mono_debug_debugger_version): New public variable.
10692
10693 2007-07-31  William Holmes  <billholmes54@gmail.com>
10694
10695         * metadata.c Changed mono_type_create_from_typespec to not insert
10696           the type into the hash map until after
10697           do_mono_metadata_parse_type has completed.
10698         Fixes Bug #82194
10699         Code is contributed under MIT/X11 license.
10700
10701 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10702
10703         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
10704         generic parameter. Fixes #82211.
10705
10706 2007-07-27  Jb Evain  <jbevain@novell.com>
10707
10708         * pedump.c (dump_metadata, dump_metadata_header): dump
10709         versions contained in the metadata header.
10710
10711 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10712
10713         * threads.c: register small_id_table with the GC.
10714
10715 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10716
10717         * threads.c, threads.h, class-internals.h, object-internals.h:
10718         Hazard pointers, to be used by lock-free parallel algorithms.
10719
10720 2007-07-26  Dick Porter  <dick@ximian.com>
10721
10722         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
10723         routine on non-windows platforms, as I've not managed to think of
10724         a non-kludgy way of doing this.  Finishes off bug 78739.
10725
10726 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10727
10728         * object.c: properly setup interface_bitmap in proxy vtables.
10729
10730 2007-07-25  Marek Habersack  <mhabersack@novell.com>
10731
10732         * appdomain.c (get_shadow_assembly_location): do not use TickCount
10733         to create unique shadow copy target directories, use the domain's
10734         serial number instead. Each domain gets a unique target directory
10735         that way.
10736
10737         * domain.c (mono_domain_create): added code to increment domain
10738         shadow copy serial number and cache the value in the current
10739         domain structure.
10740
10741         * domain-internals.h (struct _MonoDomain): added a new field -
10742         shadow_serial to hold the serial number used in generation of
10743         shadow-copy directories. This is to make sure that the directory
10744         name is unique for each and every domain created. We avoid a race
10745         condition with overriding assemblies already in use by other app
10746         domains.
10747
10748 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
10749
10750         * class.c (mono_bounded_array_class_get): fixed memory leak when 
10751         binding generic parameters.
10752
10753 2007-07-24  Raja R Harinath  <rharinath@novell.com>
10754
10755         * metadata.c (do_mono_metadata_parse_generic_class): Use
10756         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
10757         error.
10758
10759 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10760
10761         * loader.c, class-internals.h, reflection.c: removed the per-method
10762         generics hashtable: we use the global one through the call of
10763         mono_class_inflate_generic_method ().
10764
10765 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10766
10767         * class.c, metadata.c, class-internals.h: introduce yet another
10768         generics global cache for inflated methods (fixes 98% of the perf
10769         issue in bug #81806).
10770
10771 2007-07-23  Raja R Harinath  <rharinath@novell.com>
10772
10773         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
10774         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
10775         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
10776         return a MonoGenericInst containing (a copy) of those types.
10777         (mono_metadata_inflate_generic_inst): Update to changes.
10778         (mono_metadata_parse_generic_inst): Likewise.
10779         (mono_get_shared_generic_inst): Likewise.
10780         * reflection.c (mono_class_bind_generic_parameters): Likewise.
10781         (mono_reflection_bind_generic_method_parameters): Likewise.
10782         * metadata-internals.h: Likewise.
10783         * icall.c (free_generic_context): Kill.
10784         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
10785
10786         * reflection.c (reflection_methodbuilder_to_mono_method): Use
10787         mono_metadata_type_dup.
10788         * marshal.c (mono_mb_create_method): Likewise.
10789
10790         * metadata.c (mono_metadata_type_dup): Rename from
10791         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
10792         MonoImage.  Handle a few more cases, esp. when no mempool is given.
10793         * marshal.c, metadata-internals.h: Update to changes.
10794
10795 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10796
10797         * class.c: fixed a small leak for array classes and removed warning.
10798
10799 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10800
10801         * loader.c (mono_method_get_param_token): Make this work on generic methods.
10802         Return 0x8000000 for return parameters. Fixes #82161.
10803
10804 2007-07-21  Marek Habersack  <grendello@gmail.com>
10805
10806         * appdomain.c (get_shadow_assembly_location): append the current
10807         ticks value to the path. Avoids overwriting the same assemblies by
10808         several threads at the same time.
10809
10810 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10811         and Raja R Harinath  <rharinath@novell.com>
10812
10813         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10814         Simplify slightly.
10815         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
10816         property for testing if a method is a generic method definition.
10817
10818 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10819
10820         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
10821
10822 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10823
10824         * verify.c: used function from private branch, reverted to the one in class.h 
10825
10826 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10827
10828         * verify.c: a typo slipped in and the code wont compile
10829
10830 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10831
10832         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
10833         disabled box instruction as it is doing the wrong thing
10834         improved stack dump messages, now it is easier to debug type related issues
10835
10836
10837 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
10838
10839         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
10840
10841 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10842
10843         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
10844         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
10845         grouped with class and valuetype. This change will simply 
10846         the code as it should be handled just like unmanaged pointers.
10847
10848 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10849
10850         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
10851
10852 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10853
10854         * verify.c: several stack merge issues fixed, reference comparisons now
10855         check the type size. strict type check now works correctly.
10856         added more uses of IS_MANAGED_POINTER macro.
10857         fixed issues pointed by running the test suite against .net.
10858         
10859
10860 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10861
10862         * class.c, loader.c, class-internals.h: Removed the
10863         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
10864         defines.
10865
10866         * icall.c: Better error checking in some internal reflection
10867         methods.
10868
10869 2007-07-18  William Holmes  <billholmes54@gmail.com>
10870
10871         * filewatcher.c : removed unused variable 'filename' in 
10872           ves_icall_System_IO_FSW_SupportsFSW
10873
10874 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10875
10876         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
10877         obsolete, removed.
10878
10879 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
10882         
10883         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
10884
10885 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10888         Implement generics support.
10889         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10890
10891         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10892         type_args and method_args arguments.
10893         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10894         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10895         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10896
10897 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10898
10899         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10900           It adds a rootimage parameter to mono_reflection_get_type_internal,
10901           adds new function mono_reflection_get_type_with_rootimage and use
10902           the rootimage to resolve the types instead of the current image
10903
10904 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10905
10906         * culture-info-table.h: Forgot to update after r78304.
10907
10908 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10909
10910         * class.c (mono_class_is_open_constructed_type)
10911         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10912
10913 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10914
10915         * class.c (mono_bounded_array_class_get):  method fails if used with
10916         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10917         avoiding calculating the size for such array as it cannot be instantiated.
10918         Fix bug #82015
10919
10920 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10921
10922         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10923         field.
10924         * metadata.c, reflection.c: Update to changes.
10925
10926 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10927
10928         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10929         mono_class_is_valid_enum, they are used to valide a enum when loading.
10930         * reflection.c: used new functions to throw TypeLoadException when and
10931         invalid enum is build with TypeBuilder. Fixes #82018
10932   
10933 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10934
10935         * object.c: forgot commit of mono_class_setup_methods () to access
10936         iface->methods.
10937         * object-internals.h: added a few more handy fields to
10938         MonoIMTCheckItem.
10939
10940 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10941
10942         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10943         iface->methods.
10944
10945 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10946
10947         * class-internals.h, object-internals.h, object.c: IMT-based
10948         interface invocation core from Massimiliano Mantione
10949         (massi@ximian.com) with a reworked arch-specific interface,
10950         bsearch implementation and a few bugfixes and memory savings by me.
10951
10952 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10953
10954         * class.c (mono_class_create_from_typedef): mono would segfault if 
10955         an enum did not have a __value field. It now throws a TypeLoadException
10956         for such cases. Fix bug #82022
10957
10958 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10959
10960         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10961
10962 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10963
10964         * class.c (mono_class_init): If a class is already inited but has
10965         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10966
10967 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10968
10969         * class.c: Properly handle the case of an unimplemented interface
10970         method.  Fixes: 81673.
10971
10972 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10973
10974         * class-internals.h, object.c: cleanup patch from massi: use
10975         MonoVTable->interface_bitmap since the vtable interfaces offset array
10976         is going away.
10977
10978 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10981         GetMDStreamVersion icall instead.
10982
10983 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10984
10985         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10986         not use mono_dl_build_path() with a full library name: makes
10987         fallbacks to libgaim and libfam work.
10988
10989 2007-07-06  William Holmes  <billholmes54@gmail.com>
10990
10991         * assembly.c: Added a continue statement in probe_for_partial_name when
10992          parse_assembly_directory_name fails.  Fixes : 82002
10993
10994 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10995
10996         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10997         and added a verification  for TYPEDBYREF.
10998         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10999         make native int interchangeable with int32 and some small cleanup and formating.
11000         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
11001         handle byref of byref.
11002         * verify.c (push_local): handle byref of byref.
11003         * verify.c (do_binop): invalid mix of values is unverifiable
11004         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
11005         added visibility checks
11006         * verify.c (field related method): added visibility checks
11007         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
11008
11009 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
11012         string.
11013
11014 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11015
11016         * profiler.c (mono_profiler_load): Fix an off-by-one error.
11017
11018         * marshal.c (emit_marshal_string): When returning a string from managed code,
11019         allways make a copy even for unicode strings. Fixes #81990.
11020
11021 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
11022
11023         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
11024         of byref generic inst types (bug #81997).
11025
11026 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11027
11028         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
11029         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
11030
11031 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
11032
11033         * marshal.c (emit_marshal_string): Add support for unicode strings in
11034         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
11035
11036 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
11037
11038         * verify.c: field load/store are now verified, missing only access checks now
11039
11040 2007-06-28  Martin Baulig  <martin@ximian.com>
11041
11042         * mono-debug.c (mono_debug_debugger_version): New public variable.
11043
11044 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
11045
11046         * locales.c: When constructing DateTimeFormat or NumberFormat for
11047         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
11048         MonoCultureInfo contructed from the current locale is always
11049         read-only and has UseUserOverride set to true. All MonoCultureInfo
11050         instances returned for GetCultures have both IsReadOnly and
11051         UseUserOverride set to true. Fixes part of bug #81930.
11052
11053 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
11054
11055        * icall-def.h: Update System.__ComObject icalls
11056        * marshal.c: Avoid managed transition (and object creation)
11057        when looking up COM interface in RCW.
11058        * marshal.h: Ditto.
11059        
11060        Code is contributed under MIT/X11 license.
11061
11062 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
11063
11064         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
11065         to avoid crashes during assembly unloading.
11066
11067 2007-06-22  Raja R Harinath  <rharinath@novell.com>
11068
11069         Fix MethodInfo.IsGenericMethodDefinition
11070         * reflection.c (mono_reflection_bind_generic_method_parameters):
11071         Rearrange code to ensure we always uses a generic method definition.
11072         * class.c (mono_class_inflate_generic_method_full): Set
11073         'generic_container' field only for generic method definitions.
11074         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
11075         Use presense of 'generic_container' field as indication of being a
11076         generic method definition.
11077
11078 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11081
11082         * object-internals.h: Reflect changes in the layout of the managed Delegate
11083         class.
11084         
11085         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
11086         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
11087         runtime memory used by the dynamic method. Fixes #77146.
11088
11089 2007-06-21  Dick Porter  <dick@ximian.com>
11090
11091         * file-io.h: 
11092         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
11093         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
11094         81767.
11095
11096 2007-06-21  Raja R Harinath  <rharinath@novell.com>
11097
11098         * reflection.c (method_encode_methodspec): Add a tripwire.
11099         * class.c (inflate_generic_type): The fully open generic type is
11100         not the same as the generic type definition.
11101
11102 2007-06-21  Martin Baulig  <martin@ximian.com>
11103
11104         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
11105
11106         * mono-debug-debugger.h
11107         (MonoDebuggerBreakpointInfo): Removed.
11108         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
11109         (mono_debugger_remove_breakpoint): Likewise.
11110         (mono_debugger_breakpoint_callback): Likewise.
11111         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
11112
11113 2007-06-21  Raja R Harinath  <rharinath@novell.com>
11114
11115         * metadata.c (mono_metadata_lookup_generic_class): The fully open
11116         generic type is not the same as the generic type definition.
11117         * class.c (mono_generic_class_get_class): Likewise.
11118
11119 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
11120
11121         * icall.c: The second argument to 
11122         System.Reflection.MethodBase.GetMethodFromHandleInternalType
11123         is a MonoType not a MonoClass.
11124
11125 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
11126
11127         * verify.c: support for function pointers in the verifier
11128
11129 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
11130
11131         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
11132
11133 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11134
11135         * assembly.c: removed Mono.Data.SqliteClient from the list of
11136         forward-compatible assemblies as it breaks the ABI (bug #81899).
11137
11138 2007-06-19  Raja R Harinath  <rharinath@novell.com>
11139
11140         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
11141         lookup/update with the loader lock.
11142         * reflection.c (mono_class_bind_generic_parameters): No need to
11143         protect mono_metadata_lookup_* with the loader lock.
11144         * class.c (inflate_generic_type): Likewise.
11145         
11146         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
11147         on a generic instantiated type.
11148
11149 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
11150
11151         *verify.c: produce meanfull error messages on verification error
11152         *verify.c: fixed some cases of verification errors reported as validation errors
11153         *pedump.c: fixed the error name array, now it shows validation errors properly
11154         *verify.h: fixed the contant that should be used for verification errors
11155
11156 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11157
11158         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
11159         for bug #77596, 81858 and 80743 (generics data structures on domain
11160         unload).
11161
11162 2007-06-15  Raja R Harinath  <rharinath@novell.com>
11163
11164         Avoid allocating 'MonoGenericContext' on the heap.
11165         * class-internals (_MonoMethodInflated::context): Make field
11166         inline, not a pointer.
11167         * loader.c (method_from_methodspec): Allocate 'new_context' on the
11168         stack.  Use the context embedded within the inflated method as the
11169         hash key, rather than 'new_context'.
11170         * class.c (inflate_generic_context): Simplify.  Return a struct
11171         rather than allocating on the heap.
11172         (mono_class_inflate_generic_method_full): Update to changes.  Now,
11173         doesn't salt away a copy of the context -- simplifying the
11174         lifetime rules of a 'MonoGenericContext *'.
11175         (mono_method_get_context): Return pointer to embedded context.
11176         (setup_generic_array_ifaces): Allocate temporary context on stack.
11177         * reflection.c (inflate_mono_method): Likewise.
11178         (mono_reflection_bind_generic_method_parameters): Likewise.
11179         Use the context embedded within the inflated method as the hash key.
11180
11181         Avoid a source of allocation of 'MonoGenericContext'.
11182         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
11183         and 'cached_context' fields into embedded 'MonoGenericContext' field.
11184         * class.c: Update to changes.
11185         (mono_generic_class_get_context): Simplify drastically.  Now just
11186         returns a pointer to the field.
11187         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
11188         argument as a const pointer.
11189         (mono_metadata_generic_context_equal): Likewise.
11190         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
11191         Update to changes.
11192
11193 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
11194
11195         * verify.c improved the handling of brtrue/brfalse, factored out common code
11196
11197 2007-06-14  Raja R Harinath  <rharinath@novell.com>
11198
11199         Kill MonoGenericMethod.
11200         * class-internals.h (MonoGenericContext::method_inst): Rename from
11201         'gmethod' and convert to a MonoGenericInst.
11202         (MonoGenericMethod): Remove.
11203         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
11204         * loader.c (method_from_methodspec): Update to changes.  Use a
11205         MonoGenericContext as the key to the hashtable.
11206         * metadata.c (mono_metadata_generic_context_equal): Rename from 
11207         'mono_metadata_generic_method_equal' and take MonoGenericContext.
11208         (mono_metadata_generic_context_hash): Likewise from
11209         'mono_metadata_generic_method_hash'.  Change hash function.
11210         (mono_metadata_load_generic_params): Update to changes.
11211         (mono_get_shared_generic_method): Remove.
11212         * metadata-internals.h (mono_get_shared_generic_method): Remove.
11213         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
11214         (inflate_generic_context): Likewise.
11215         (mono_class_inflate_generic_method_full): Likewise.
11216         (setup_generic_array_ifaces): Likewise.
11217         (mono_class_create_from_typespec): Likewise.
11218         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
11219         (method_encode_methodspec): Update callsite.
11220         (reflection_methodbuilder_to_mono_method): Update to changes.
11221         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
11222         MonoGenericContext as the key to the hashtable.
11223         (inflate_mono_method): Update to changes.
11224
11225         * class-internals.h (MonoGenericMethod::container): Remove.
11226         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11227
11228 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11229
11230         * profiler-private.h, profiler.c, profiler.h: added API to profile
11231         exception events.
11232
11233 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
11234
11235         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
11236
11237 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
11238
11239         * verify.c: method invocation is now validated, now we verify parameter types on stack.
11240         Fixed overflow and underflow not aborting the verification process.
11241
11242 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11243
11244         * class-internals.h (MonoStats): Added stats entries for dynamic
11245         code allocations.
11246
11247 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * loader.c (mono_free_method): Free header->locals and header->clauses.
11250
11251         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
11252         dynamic case.
11253
11254         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
11255
11256         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
11257
11258 2007-06-12  Raja R Harinath  <rharinath@novell.com>
11259
11260         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
11261         the tables.
11262
11263 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
11264
11265         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
11266
11267 2007-06-11  Raja R Harinath  <harinath@gmail.com>
11268
11269         MonoGenericMethod on a diet
11270         * class-internals.h (_MonoMethodInflated::reflection_info): Move
11271         here ...
11272         (_MonoGenericMethod::reflection_info): ... from here.
11273         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
11274         Update to changes.
11275         * reflection.c (inflate_mono_method): Likewise.
11276         (mono_reflection_bind_generic_method_parameters): Likewise.
11277
11278 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
11279
11280         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
11281         *verify.c: factored long ldarg forms to share code with short forms
11282
11283 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
11284
11285         *verify.c: fixed code formating factored some duplicate code
11286         into a new function
11287
11288         *verify.h: fixed binary incompatibility introduced earlier
11289
11290         *pedump.c: fixed formating
11291
11292 2007-06-11  Raja R Harinath  <harinath@gmail.com>
11293
11294         Fix assertion when disassembling Mono.C5.dll
11295         * loader.c (method_from_methodspec): Avoid inflating a method
11296         twice with the same context.  If the methodref is inflated, use
11297         the declaring method instead.
11298
11299         * class.c (mono_class_from_generic_parameter): Fix case similar to
11300         bug #81830 handled below, but for method containers.
11301
11302 2007-06-10  Raja R Harinath  <harinath@gmail.com>
11303
11304         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
11305         get_shared_generic_class.  Directly inflate the instance.
11306         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
11307         (inflate_generic_class): Delete.
11308         (get_shared_generic_class): Delete.  Move setting of
11309         'cached_class' and 'cached_context' ...
11310         * metadata.c (mono_metadata_lookup_generic_class): ... here.
11311
11312         * metadata.c (mono_metadata_lookup_generic_class): Change
11313         signature to take the components of a MonoGenericClass rather than
11314         an allocated MonoGenericClass.  Change semantics to be intern-like.
11315         * reflection.c (mono_class_bind_generic_parameters): Update to
11316         changes.  Make locking region tighter.
11317         * class.c (inflate_generic_class): Update to changes.
11318         (get_shared_generic_class): Likewise.
11319         * metadata-internals.h: Likewise.
11320
11321         * reflection.c (mono_class_bind_generic_parameters): Take and
11322         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
11323         (mono_reflection_bind_generic_parameters): Use
11324         'mono_class_bind_generic_parameters' rather than duplicate the code.
11325         * class.c (mono_bounded_array_class_get): Update to changes.
11326         * object-internals.h: Likewise.
11327
11328         * reflection.c (mono_class_bind_generic_parameters): Only support
11329         parameterizing generic type definitions.  Remove support for other
11330         open types.
11331
11332 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
11333
11334         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
11335
11336         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
11337         in the dynamic case.
11338
11339 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
11340
11341         * threads.c: When cleaning up thread, reset the Background bit.
11342         Fixes bug #81720.
11343
11344 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
11345
11346        * metadata.c: Move variable declarations to top of scope.
11347        * verify.c: Move variable declarations to top of scope.
11348
11349        Code is contributed under MIT/X11 license.
11350
11351 2007-06-08  Raja R Harinath  <rharinath@novell.com>
11352
11353         * reflection.c (mono_class_bind_generic_parameters): Replace
11354         open-coded loop with mono_metadata_inflate_generic_inst.
11355
11356         * class.c (get_shared_generic_class): Don't call
11357         mono_get_shared_generic_inst.  Use the container's own
11358         'class_inst'.
11359
11360         * metadata.c (mono_metadata_load_generic_params): Move
11361         initialization of 'context' field here from ...
11362         * class.c (mono_class_create_from_typedef): ... here, and ...
11363         * loader.c (mono_get_method_from_token): ... here.
11364
11365         * class.c (get_shared_generic_class): Rename from
11366         mono_get_shared_generic_class and make static.
11367         (mono_get_shared_generic_inst): Move to metadata.c.
11368         * loader.c (mono_get_shared_generic_method): Likewise.
11369         * class-internals.h, metadata-internals.h: Update to changes.
11370
11371         Fix #81830
11372         * class.c (mono_class_from_generic_parameter): Don't assume a
11373         generic container owner exists.  Generic containers from monodis
11374         don't have any.
11375
11376 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
11377
11378         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
11379         * verify.h: new typedefs to returns the non-verifiable status
11380         * verify.c: initial implementation of generics, stack merging and object compatibility check
11381
11382 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11383
11384         * class.c, image.c, class-internals.h (MonoImage): class_cache is
11385         a MonoInternalHashTable again (fixed bug in internal hash table
11386         code).
11387
11388 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11389
11390         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
11391         MonoInternalHashTable again (fixed bug in internal hash table
11392         code).
11393
11394 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11395
11396         * class.c, image.c, class-internals.h, domain.c,
11397         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
11398         changes.  Have to figure out what makes them break the SWF
11399         regression.
11400
11401 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11402
11403         * class.c, image.c, class-internals.h (MonoImage): class_cache is
11404         a MonoInternalHashTable now.
11405
11406 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11407
11408         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
11409         MonoInternalHashTable now.
11410
11411 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11412
11413         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
11414         invoke_impl code.
11415
11416         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
11417
11418         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
11419         dependent trampoline.
11420
11421         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11422
11423         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
11424
11425 2007-05-29  Robert Jordan  <robertj@gmx.net>
11426
11427         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
11428
11429 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
11430
11431         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
11432
11433 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
11434
11435        * marshal.c: Fix interface lookup loops for
11436        cominterop_get_com_slot_for_method and 
11437        cominterop_get_method_interface. Only need to lookup
11438        if type is a class, else use interface type method is on.
11439
11440        Code is contributed under MIT/X11 license.
11441
11442 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
11443
11444         * reflection.c: HasSecurity can be present even if no specially 
11445         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
11446         SecurityAttribute). Fix CAS regression tests on buildbot.
11447
11448 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11449
11450        * appdomain.c: Add configure checks for header files.
11451        * image.c: Add configure checks for header files.
11452        * file-io.c: Add configure checks for header files.
11453        * debug-mono-symfile.c: Add configure checks for header files.
11454        * threadpool.c: Add configure checks for header files.
11455        * console-io.c: Add configure checks for header files.
11456        * profiler.c: Add configure checks for header files.
11457        * rawbuffer.c: Add configure checks for header files.
11458        * icall.c: Add configure checks for header files.
11459        * rand.c: Add configure checks for header files.
11460        * socket-io.c: Add configure checks for header files.
11461
11462        Code is contributed under MIT/X11 license.
11463
11464 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
11465
11466         * reflection.c (mono_custom_attrs_from_builders): Remove the 
11467         assertion as it breaks the build.
11468         
11469         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
11470
11471         * reflection.c (lookup_custom_attr): Make a copy here too.
11472
11473         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
11474         dynamic images.
11475
11476         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
11477         images.
11478
11479         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
11480         info.
11481
11482 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
11485         (load_cattr_value): Ditto.
11486
11487 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
11488
11489         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
11490
11491 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
11492
11493         * threads.c: In "start_wrapper", set apartment_state to MTA if
11494         apartment_state is Unknown and we're running on 2.0 profile or
11495         higher.
11496         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
11497         to main method, then set apartment_state to Unknown on 1.0 profile,
11498         and MTA on 2.0 profile.
11499
11500 2007-05-16  Jb Evain  <jb@nurv.fr>
11501
11502         * class-internals.h (MonoDefaults): Add an attribute_class and
11503           customattribute_data_class.
11504         * domain.c (mono_init_internal): Populate them.
11505         * reflection.c: Use them to remove duplicates. Make a vew
11506         MonoClass variables `static'.
11507
11508 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11509
11510         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
11511         step in implementing IMT, so that all isinst checks now can go
11512         through the bitmap.
11513         This was needed because vtables for TransparentProxy need to look
11514         like the vtable of the "target" class, so they need to point to
11515         its interface bitmap directly.
11516
11517         * object.c: inside "mono_class_create_runtime_vtable" and
11518         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
11519
11520 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
11521
11522         * object-internals.h
11523           culture-info.h : added territory field in MonoCulture and
11524           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
11525         * locales.c : fill territory field above too.
11526         * culture-info-table.h : regenerated.
11527
11528 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
11531         Fixes #81599.
11532
11533 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
11534
11535         * object.c: Always initialize apartment, even if 
11536         there is no custom attributes on entry point.
11537         
11538         Code is contributed under MIT/X11 license.
11539
11540 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
11541
11542         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
11543         * metadata.c: If no encoding is set, check for unicode
11544         on class.
11545         
11546         Code is contributed under MIT/X11 license.
11547
11548 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
11549
11550         * threads.c: Handle if mono_thread_current returns NULL 
11551         
11552         Code is contributed under MIT/X11 license.
11553
11554 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
11555
11556         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
11557         in start_wrapper. Added mono_thread_init_apartment_state and
11558         mono_thread_cleanup_apartment_state.
11559         * object.c: Initialize thread apartment state on main thread
11560         by checking for STAThreadAttribute on entry point.
11561         * object-internals.h: Add apartment_state field to MonoThread.
11562         * threads-types.h: Add unmanaged definition of 
11563         System.Threading.ApartmentState, MonoThreadApartmentState.
11564         
11565         Code is contributed under MIT/X11 license.
11566         
11567 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
11568
11569         * class.c: Fix windows build.
11570         * class-internals.h: Fix windows build.
11571         
11572         Code is contributed under MIT/X11 license.
11573
11574 2007-05-08  Robert Jordan  <robertj@gmx.net>
11575
11576         * process.c (CreateProcess_internal):
11577         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
11578         .CreateNoWindow was specified. Fixes #81496.
11579
11580 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11581
11582         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
11583         step in implementing IMT, replaced it with two compact arrays
11584         (interfaces_packed and interface_offsets_packed) and a bitmap that
11585         is used for isinst checks (interface_bitmap).
11586
11587         * class.c: (compare_interface_ids): compare function to pass to
11588         bsearch when looking for an interface with a given id.
11589         (mono_class_interface_offset): reimplemented using bsearch on
11590         interfaces_packed, getting the offset from interface_offsets_packed.
11591         (print_implemented_interfaces): utility debugging function.
11592         (setup_interface_offsets): reworked to initialize interfaces_packed,
11593         interface_offsets_packed and interface_bitmap.
11594
11595         * object.c: replaced all accesses to "MonoClass.interface_offsets"
11596         with uses of interfaces_packed and interface_offsets_packed.
11597
11598 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11599
11600         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
11601         mono_class_interface_offset prototype to wrap all accesses to
11602         "MonoClass.interface_offsets".
11603
11604         * class.c: Implemented mono_class_interface_offset, and wrapped all
11605         accesses to "MonoClass.interface_offsets".
11606
11607         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
11608         "MonoClass.interface_offsets".
11609
11610 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
11611
11612         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
11613         GetMethodFromHandle overloads (bug #78637).
11614
11615 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11616
11617         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
11618         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
11619
11620 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
11621
11622         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
11623         #81498.
11624
11625         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
11626         gracefully.
11627         (mono_custom_attrs_from_index): Ditto.
11628
11629         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
11630         Fixes #81501.
11631
11632 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
11635         is now allocated from a mempool.
11636
11637 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
11638
11639         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
11640         caller holds threads_lock, leading to deadlocks. Fixes #81476.
11641
11642 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11643
11644         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
11645         mono_loader_clear_error () too late. Fixes #81463.
11646
11647 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
11648
11649         * culture-info-table.h : regenerated.
11650
11651 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11652
11653         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
11654         is missing.
11655
11656 2007-04-25  Dick Porter  <dick@ximian.com>
11657
11658         * Makefile.am: Put the mingw enforced-optimisation back into the
11659         PLATFORM_WIN32 section.
11660
11661 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11662
11663         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
11664         patch.
11665
11666         * image.c (mono_image_load_module): New API function to load a module reference.
11667
11668         * image.c (load_modules): Load modules lazily. Fixes #80812.
11669
11670         * class.c (mono_class_from_typeref): Use mono_image_load_module.
11671         
11672         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
11673
11674         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
11675         to mono_image_load_module_dynamic.
11676
11677 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
11678
11679         * marshal.c: Fix calling convention for CCW on non-windows
11680         platforms. STDCALL on windows, CDECL everywhere else to work 
11681         with XPCOM and MainWin COM.
11682         
11683         Code is contributed under MIT/X11 license.
11684
11685 2007-04-23  Martin Baulig  <martin@ximian.com>
11686
11687         Fix #80969.
11688
11689         * loader.c
11690         (method_from_memberref): Added `gboolean *used_context' argument.
11691         (mono_get_method_from_token): Likewise.
11692         (mono_get_method_full): Don't insert the method in the cache when
11693         `used_context' is true.
11694
11695 2007-04-23  Raja R Harinath  <rharinath@novell.com>
11696
11697         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
11698
11699         * reflection.c (mono_reflection_bind_generic_parameters): Don't
11700         create new MonoTypes for returned types.
11701         * class.c (mono_generic_class_get_class): Export mono-internal.
11702         * class-internals.h: Update to changes.
11703
11704 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
11705
11706         * threadpool.c, threadpool.h, icall-def.h: patch from
11707         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
11708
11709 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
11712         
11713         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
11714
11715         * threads.c (mono_thread_get_stack_bounds): New helper function.
11716
11717         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
11718         Correctly compute stack bounds when attaching. Fixes #81394.
11719
11720 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
11721
11722         * reflection.c: fix handling of doubles in custom attributes
11723         for the arm-fpa format (bug #81368).
11724
11725 2007-04-18  Raja R Harinath  <rharinath@novell.com>
11726
11727         * reflection.c (assembly_add_win32_resources): Mildly relax an
11728         bounds check to let the end pointer point just past the end of the
11729         allocated buffer.  (may fix #81384)
11730
11731 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
11732
11733         * culture-info-table.h : regenerated.
11734
11735 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
11738         the thread is aborted early.
11739
11740 2007-04-05  Dick Porter  <dick@ximian.com>
11741
11742         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
11743         FindFirstFile()/FindNextFile() to find entries.  This lets the
11744         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
11745         81038.
11746
11747         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
11748         the parameters of
11749         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
11750
11751 2007-04-04  Martin Baulig  <martin@ximian.com>
11752
11753         * debug-helpers.c
11754         (mono_method_desc_full_match): Add support for nested classes.
11755
11756 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
11759
11760 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
11763         waiting for too many threads.
11764
11765 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
11766
11767         * environment.c: Fix return value check on uname so we can get the 
11768         executing version on Solaris operating systems.
11769
11770 2007-03-28  Jb Evain  <jbevain@gmail.com>
11771
11772         * class.c (mono_type_get_name_recurse): Complete the
11773         fix for the creation of assembly qualified names for
11774         pointer types. Fixes #81208.
11775
11776 2007-03-27  Dick Porter  <dick@ximian.com>
11777
11778         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
11779         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
11780         changed.
11781
11782         * threads.c
11783         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
11784         the value of ReleaseMutex().
11785
11786 2007-03-27  Dick Porter  <dick@ximian.com>
11787
11788         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
11789         in little-endian order, not network endian, so must be converted
11790         to host endian here.  Fixes bug 80593.
11791
11792 2007-03-22  Jb Evain  <jbevain@gmail.com>
11793
11794         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
11795         qualified names for pointer types. Fixes #81208.
11796
11797 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
11798
11799         * marshal.c: Add support for PreserveSigAttribute. 
11800         
11801         Code is contributed under MIT/X11 license.
11802
11803 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
11804
11805         * process.c: Fix endianness issues. Fixes #81126.
11806
11807         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
11808         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
11809
11810         * image.c (mono_image_lookup_resource): Make this work on big-endian
11811         machines.Change API contract so the caller needs to free the return value.
11812         
11813         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
11814         API change.
11815         
11816 2007-03-14  Martin Baulig  <martin@ximian.com>
11817
11818         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
11819         mono_type_get_desc() as well.
11820
11821 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11822
11823         * icall.c:  Fix environ access in VS.  
11824         
11825 2007-03-13  Alp Toker  <alp@atoker.com>
11826
11827         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11828         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11829         #63841.
11830
11831 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
11832
11833         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
11834         circular references among dynamic methods. Fixes #81091.
11835
11836         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
11837
11838 2007-03-09  Martin Baulig  <martin@ximian.com>
11839
11840         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
11841
11842 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
11843
11844         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
11845         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
11846         
11847         Code is contributed under MIT/X11 license.
11848         
11849 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
11850
11851         * loader.c: Reapply patch for bug #79424.
11852
11853 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11854
11855         * metadata.c (mono_type_to_unmanaged): Only convert object to
11856         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
11857
11858 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
11859
11860         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
11861         (and incorrectly set) is_reference field from MonoGenericInst.
11862
11863 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11864
11865         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
11866         a little earlier.
11867
11868         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
11869
11870         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
11871
11872 2007-03-05  Miguel de Icaza  <miguel@novell.com>
11873
11874         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
11875         FileOptions.1 value to mean "temporary", map that to
11876         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
11877
11878         Fixes 80688
11879
11880 2007-03-03  Marek Habersack  <mhabersack@novell.com>
11881
11882         * appdomain.c: implement MS .Net style shadow copying. Copies of
11883         the assemblies are made in a subdirectory of the dynamic base
11884         directory, the assembly names are preserved.
11885         Copy .mdb and .config files along with the assemblies being shadowed.
11886
11887 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11888
11889         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11890         (emit_marshal_handleref): Ditto.
11891
11892         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11893         on Visual C++. Fixes #80671.
11894
11895 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11896
11897         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11898         for clone operations.
11899
11900 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11901
11902         * marshal.c: Fix warnings.
11903
11904 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11905
11906         * loader.c: allow case-insensitive matching of the dll name
11907         in dllmap handling when prefixed with "i:".
11908
11909 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11910
11911         * threads.c: Fix #ifdef for dummy_apc function for VS.
11912
11913 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11914
11915         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11916
11917 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11918         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11919         giving precedence to the methods with a fully qualified name
11920         (InterfaceName.MethodName) when building the interface sections
11921         of the vtable.
11922
11923 2007-02-16  Dick Porter  <dick@ximian.com>
11924
11925         * threadpool.c (append_job): Fix fast-path array handling, so it's
11926         less likely the array will grow exponentially when the load is
11927         heavy.
11928
11929 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11930
11931         * metadata-internals.h, loader.c: fix dllmap lookup order
11932         for non-function maps, too, and prepare for fallback code.
11933
11934 2007-02-12  Robert Jordan  <robertj@gmx.net>
11935
11936         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11937         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11938         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11939         GlobalFree. Fixes a part of bug #77075.
11940
11941 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11942
11943         * loader.c: implemented typedef parent in field memberref.
11944
11945 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11946
11947         * marshal.c: Fix warnings and remember to call Release on
11948         IUnknown of RCW.
11949         
11950         Code is contributed under MIT/X11 license.
11951
11952 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11953
11954         * class-internals.h: Add MonoHandleRef definition, and
11955         handleref_class to mono_defaults. 
11956
11957         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11958         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11959
11960         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11961         (do nothing on this stage)
11962         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11963         (emit_marshal_handleref): New method, used for argument handling
11964         of HandleRefs. 
11965
11966 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11967
11968         * class.c (mono_class_setup_parent): Lazily init com types.
11969         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11970         init com types.
11971         * object.c (mono_remote_class_vtable): Lazily init com types.
11972         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11973         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11974         * domain-internals.h: Expose mono_init_com_types.
11975         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11976         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11977         Add support for COM Callable Wrapper marshalling.
11978         * marshal.h: Add icall definitions.
11979         * gc.c: Handle freeing of CCWs in finalizer code.
11980         
11981         Code is contributed under MIT/X11 license.
11982
11983 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11984
11985         * reflection.c: changed all the signature encoding code to use
11986         a variable-sized buffer.
11987
11988 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11989
11990         * marshal.c: locking fixes: never take the loader lock
11991         or other runtime locks when holding the marshal lock
11992         (fixes bug#80664).
11993
11994 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11995
11996         * marshal.c: make the delegate function pointer mapping
11997         work for the moving GC.
11998
11999 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
12000
12001         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
12002         for bug #80618.
12003
12004 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12005
12006         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
12007         gmodule.
12008
12009 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12010
12011         * threadpool.c: made the code moving-GC safe.
12012
12013 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
12014
12015         * assembly.c, boehm-gc.c, class-internals.h, class.c,
12016         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
12017         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
12018         warning cleanup.
12019         * reflection.c: warning cleanup, some threading and moving GC fixes.
12020
12021 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
12022
12023         * class.c, loader.c: create the needed Set/Get/Address array methods
12024         as well as the .ctors in mono_class_init (), fixes bug #80567.
12025
12026 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
12027
12028         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
12029         we doesn't decrease its alignment. Should fix the sparc build.
12030
12031 2007-01-24  Dick Porter  <dick@ximian.com>
12032
12033         * socket-io.c
12034         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
12035         Create the returned object if we need to ignore an unsupported
12036         socket option.  Fixes a segfault reported by Atsushi.
12037
12038 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12039
12040         * class.c, object.c: restrict GC-tracked fields to
12041         UIntPtr fields used inside corlib, so we provide better
12042         type info to the GC and also allow broken packing as in
12043         bug #80580.
12044
12045 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
12046
12047         * sgen-gc.c: removed duplicated function.
12048
12049 2007-01-19  Miguel de Icaza  <miguel@novell.com>
12050
12051         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
12052         value that means that the value is not supported, but that we
12053         should not return a failure, but instead report this as a
12054         successful operation.
12055
12056 2007-01-19  Raja R Harinath  <rharinath@novell.com>
12057
12058         Fix tests/bug79956.2.il
12059         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
12060         (mono_generic_class_get_class): If the generic definition in an
12061         enum, copy over other fields related to it.
12062
12063 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12064
12065         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
12066         genericinst enums (bug #79215).
12067
12068 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
12069         * class.c: Fix bug 80307.
12070
12071 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
12072
12073         * image.c: if the file table is not present, try to load
12074         all the modules, since we don't have info about them
12075         having or not metadata (bug #80517).
12076         * assembly.c: allow mono_assembly_load_references () to
12077         work for netmodules.
12078
12079 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12080
12081         * image.c, metadata-internals.h, object.c: execute module
12082         cctors when running on the 2 runtime if present (bug #80487).
12083
12084 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
12085
12086         * icall.c: optimized InitializeArray() on bigendian.
12087
12088 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
12089
12090         * icall.c: fix for the broken ARM FPA double format.
12091
12092 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12093
12094         * icall.c: handle endian issues for r4 and r8 types, too, in
12095         the InitializeArray() icall.
12096
12097 2007-01-15  Miguel de Icaza  <miguel@novell.com>
12098
12099         * loader.c (mono_loader_error_prepare_exception): Clear the error
12100         once we have extracted the information from it, do this before we
12101         call into the JIT's class loading mechanisms.
12102
12103         * object.c (mono_class_create_runtime_vtable): Do not clear the
12104         loader error before calling mono_class_get_exception_for_failure
12105         as the loader error is needed inside
12106         mono_class_get_exception_for_failure to throw the error (thinko).
12107
12108         Fixes #80521
12109         
12110 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12111
12112         * reflection.c: align fields rva data so it's faster to load at
12113         runtime.
12114
12115 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12116
12117         Prepare to simplify GenericMethod handling.
12118         * class-internals.h (mono_method_get_context): New accessor function.
12119         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
12120         rather than directly accessing '->context' field.
12121
12122         * class-internals.h (_MonoGenericParam.method): Move ...
12123         (_MonoGenericContainer): ... here.  Add into union with klass field.
12124         * class.c, icall.c, loader.c, metadata.c, reflection.c:
12125         Update to changes.
12126
12127 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
12128
12129         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
12130         the wrapper type enum and reduce relocations.
12131
12132 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12133
12134         * reflection.c (inflate_mono_method): Reuse method instantiation
12135         from the generic method, if available.
12136
12137 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
12138
12139         * marshal.c (emit_marshal_variant): Fix conv_arg
12140         type in last commit, based on whether parameter is byref.
12141         
12142 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
12143
12144         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
12145         marshalling.
12146         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
12147         MONO_TYPE_OBJECT back for VARIANT support.
12148
12149 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
12150
12151         * marshal.c, marshal.h, icall-def.h: Implement 
12152         Marshal.ReAllocCoTaskMem.
12153
12154 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
12155
12156         * marshal.c: memory retention fixes: use the proper
12157         image cache for runtime_invoke method lookups.
12158
12159 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12160
12161         * mempool.c: added code to help debug mempool allocations.
12162
12163 2007-01-11  Dick Porter  <dick@ximian.com>
12164
12165         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
12166         support (experimenting with faking it with IP_MTU_DISCOVER for
12167         systems that don't have IP_DONTFRAGMENT.)
12168         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
12169         icall.
12170
12171         * icall-def.h: new System.Net.Sockets.Disconnect icall.
12172
12173         * socket-io.h: Add new fields to MonoSocketAsyncResult
12174         corresponding to the new ones in Socket.cs.
12175
12176 2007-01-11  Raja R Harinath  <rharinath@novell.com>
12177
12178         Fix IronPython regression mentioned in #80249
12179         * metadata.c (do_mono_metadata_parse_generic_class): Clear
12180         'cached_context' field, since it may have been initialized as a
12181         side-effect of metadata parsing.
12182
12183         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
12184         (_MonoGenericClass.cached_class): Move here and rename from lone
12185         remaining field of ...
12186         (_MonoInflatedGenericClass): ... this.  Remove.
12187         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
12188         to changes.
12189
12190         Fix mcs/tests/test-128.cs regression.
12191         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
12192         2007-01-10 change below.
12193         [MONO_TYPE_OBJECT]: Recurse into array case.
12194
12195 2007-01-11  Raja R Harinath  <harinath@gmail.com>
12196
12197         * class-internals.h (mono_get_inflated_generic_class): Remove.
12198         * class.c (mono_get_inflated_generic_class): Remove.
12199         (mono_generic_class_get_class): Rename from
12200         mono_class_create_generic.
12201         (mono_class_from_mono_type) [GENERICINST]: Use it.
12202         * reflection.c, metadata.c: Update to changes.  Use
12203         'mono_class_from_mono_type'.
12204
12205 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12206
12207         * reflection.c: use passed type when encoding an array element
12208         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
12209
12210 2007-01-09  Robert Jordan  <robertj@gmx.net>
12211
12212         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
12213         result arguments (someDelegate.EndInvoke (unrelatedAres)).
12214         Fixes bug #80392.
12215
12216 2007-01-09  Raja R Harinath  <rharinath@novell.com>
12217
12218         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
12219
12220         * object.c (set_value): Avoid aliasing between type->data.klass
12221         and type->data.generic_class.
12222
12223         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
12224
12225 2007-01-08  Raja R Harinath  <rharinath@novell.com>
12226
12227         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
12228         between type->data.klass and type->data.generic_class.
12229
12230 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
12231
12232         * marshal.c: In MS.NET, StringBuilder objects are not copied by
12233         value in out parameters.
12234
12235 2007-01-08  Raja R Harinath  <rharinath@novell.com>
12236
12237         Simplify invariant for MonoGenericClass::klass field.
12238         * class.c (mono_class_create_generic): Verify 'klass' is null.
12239         * metadata.c (do_mono_metadata_parse_generic_class): Don't
12240         initialize 'klass' field.
12241
12242 2007-01-05  Raja R Harinath  <rharinath@novell.com>
12243
12244         Ongoing work to avoid redundant data and simplify invariants.
12245         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
12246         'generic_class', and change type to a GenericInst.
12247         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
12248         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
12249
12250 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
12251
12252         * class.c : skip io-layer under PLATFORM_WIN32.
12253
12254 2007-01-03  Tor Lillqvist  <tml@novell.com>
12255
12256         Fix #80305: In a bundled executable, look in the bundled exe
12257         assembly to determine the runtime version. Add the possibility to
12258         bundle also the machine.config file.
12259         
12260         * assembly.c (mono_assembly_open_from_bundle): Make
12261         non-static. Allow being called even if we have no bundled
12262         assemblies, and return NULL right away in that case.
12263
12264         * domain-internals.h: Declare mono_assembly_open_from_bundle()
12265         here.
12266
12267         * domain.c (app_config_parse): Take an assembly exe file name as
12268         parameter instead of a config file name. Check for a bundled
12269         config file for that assembly by calling
12270         mono_config_string_for_assembly_file() (see below) before looking
12271         for one in the file system.
12272         (get_runtimes_from_exe): Corrsponding change to call of
12273         app_config_parse().
12274         (get_runtimes_from_exe): Check for bundled assembly exe file first
12275         by calling mono_assembly_open_from_bundle(). If no bundled
12276         assembly exe file is found, call mono_image_open() as before to
12277         look it up in the file system.
12278
12279         * mono-config.c: Add variable bundled_machinec_onfig.
12280         (mono_config_string_for_assembly_file): New function.
12281         (mono_config_for_assembly): Move code snippet that looks for a
12282         bundled assembly .config file into the above new function. Call
12283         it.
12284         (mono_register_machine_config, mono_get_machine_config): New
12285         functions to set and retrieve
12286
12287         * assembly.h: Declare mono_register_machine_config().
12288
12289         * mono-config.h: Declare mono_get_machine_config() and
12290         mono_config_string_for_assembly_file().
12291
12292         * icall.c: No declaration of environ necessary on Win32. It is
12293         declared (as a macro expanding to a function call) in stdlib.h.
12294         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
12295         New internal mono function. Returns the value of
12296         mono_get_machine_config() as a Mono string.
12297
12298         * icall-def.h: Add get_bundled_machine_config().
12299
12300 2007-01-04  Raja R Harinath  <rharinath@novell.com>
12301
12302         Remove redundant field
12303         * class-internals.h (_MonoGenericContext.container): Remove field.
12304         * loader.c (mono_method_get_signature_full): Don't parse a
12305         "container" for a signature parse when the signature is inflated
12306         immediately.
12307         (method_from_methodspec): Likewise, for a generic_inst.
12308         * class.c, metadata.c, reflection.c: Update to changes.
12309
12310 2006-01-04  Raja R Harinath  <rharinath@novell.com>
12311
12312         * class-internals.h (_MonoGenericClass): Rename 'context' field to
12313         'cached_context', and change semantics -- it starts off NULL, and
12314         is initialized on demand.
12315         * class.c (mono_generic_class_get_context): New accessor to
12316         replace 'context' field accesses.
12317         (mono_class_get_context): New helper.
12318         (*): Update to changes.
12319         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
12320
12321 2007-01-03  Miguel de Icaza  <miguel@novell.com>
12322
12323         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
12324         before the memcpy.   Fixes Marshal2 regression.
12325
12326 2007-01-02  Jb Evain  <jbevain@gmail.com>
12327
12328         * blob.h: add a MONO_TYPE_ENUM definition
12329         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
12330         fix the encoding of arrays of enums in custom attributes.
12331
12332         Fixes #79666.
12333
12334 2007-01-01  Miguel de Icaza  <miguel@novell.com>
12335
12336         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
12337         string is null terminated, but only cut the string short if it
12338         overflows the buffer.   
12339         
12340         (mono_string_to_byvalstr): Also fix this routine.   The code here
12341         was not properly terminating a string (it was only terminated
12342         because of the previous catch-all memset). 
12343
12344         I left the memset, because I do not know if applications expect
12345         the runtime to clear this region. 
12346
12347         Fixes #79944.
12348
12349         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
12350         Clear the error before returning to unmanaged code to prevent the
12351         runtime from being confused later on (fixes  80420).
12352         (ves_icall_type_from_name): Always call mono_loader_clear_error
12353         after parsing a type that could have failed.
12354         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
12355
12356         * loader.c (mono_loader_clear_error): Fix indentation.
12357
12358 2006-12-28  Martin Baulig  <martin@ximian.com>
12359
12360         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
12361
12362 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
12363
12364         * reflection.c: patch from Rolf Bjarne Kvinge to fix
12365         getting a token for an EnumBuilder.
12366
12367 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
12368
12369         * reflection.c: be more careful in case resource generation
12370         fails to create the data array.
12371
12372 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
12373
12374         * sgen-gc.c: write barrier for clone and fix unregister handles.
12375
12376 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12377
12378         * reflection.c: some fixes needed in the generics code for the moving GC.
12379
12380 2006-12-22  Robert Jordan  <robertj@gmx.net>
12381
12382         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
12383         account. Fixes bug #80299.
12384
12385 2006-12-21  Raja R Harinath  <rharinath@novell.com>
12386
12387         Fix WaitHandle usage in delegates.
12388         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
12389         * object.c (mono_wait_handle_new): Use the property set method to
12390         initialize the handle.
12391         (mono_wait_handle_get_handle): New.
12392         * threadpool.c (mono_async_invoke): Use it.
12393         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
12394         Likewise.
12395         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
12396
12397 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
12398
12399         * marshal.c (emit_marshal): Call emit_marshal_variant and
12400         emit_marshal_com_interface when applicable.
12401         (emit_marshal_variant, emit_marshal_com_interface): Add
12402         methods for this case and remove if's from emit_marshal_object.
12403         
12404 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
12405
12406         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
12407
12408 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
12409
12410         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
12411         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
12412         and GlobalFree on Windows. Remove FIXME.
12413
12414 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12415
12416         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
12417         implementation for managed objects.
12418
12419 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12420
12421         * object.c: implemented code to be used for checking
12422         that no reference field overlaps with non-references.
12423
12424 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12425
12426         * threadpool.c: fix queue code to be compatible with the
12427         moving GC.
12428
12429 2006-12-18  Miguel de Icaza  <miguel@novell.com>
12430
12431         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
12432         in structures by throwing ArgumentNullException.
12433
12434         (emit_marshal_safehandle): Also when they are null parameters.
12435
12436         (emit_marshal_safehandle): Add support for ref
12437         SafeHandles parameters
12438
12439 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12440
12441         * profiler.c: updated to use the mono-dl API instead of
12442         gmodule.
12443
12444 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12445
12446         * profiler.c: updated to use the mono-dl dynamic loading
12447         API instead of gmodule.
12448
12449 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12450
12451         * profiler.c: use readlink, older versions of glib don't have
12452         g_file_read_link ().
12453
12454 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12455
12456         * profiler.c: try to detect the path to mono if libc fails to provide
12457         a useful name (bug #80286).
12458
12459 2006-12-16  Raja R Harinath  <rharinath@novell.com>
12460
12461         Fix #80242
12462         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
12463         instance, use the generic type definition instead.
12464         (ves_icall_Type_GetNestedTypes): Likewise.
12465         * class.c (mono_class_create_generic): Always set the
12466         nested_classes of a generic instance to NULL, even if the generic
12467         type definition has nested types.
12468
12469 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
12470
12471         * marshal.c (mono_string_from_bstr): Revert previous Windows change
12472         and fix on Linux.
12473         
12474 2006-12-15  Miguel de Icaza  <miguel@novell.com>
12475
12476         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
12477         my arguments were in the wrong order.   I also fixed the Windows
12478         version which seems to have had the same issue.
12479
12480         (mono_free_bstr): On Unix, this is g_free.
12481         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
12482         conversions (for the tests in corlib to pass).
12483
12484 2006-12-14  Miguel de Icaza  <miguel@novell.com>
12485
12486         * marshal.c (emit_ptr_to_object_conv): For now, ignore
12487         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
12488         exception if a ref SafeHandle in a struct has changed).
12489         
12490         (emit_struct_conv): Do not perform layout checks for classes
12491         derived from SafeHandle, as those are specially handled. 
12492
12493         (emit_object_to_ptr_conv): Add support for
12494         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
12495
12496         (emit_marshal_safehandle): Implement conversion of return values
12497         of safehandles (MARSHAL_ACTION_CONV_RESULT).
12498         
12499         * threads.c: WaitHandle now is compiled with two different handles
12500         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
12501         for 2.0.
12502         
12503         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
12504         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
12505         these routines to cope with both kinds of fields.
12506
12507 2006-12-12  Miguel de Icaza  <miguel@novell.com>
12508
12509         * metadata.c (mono_type_to_unmanaged): Handle the case where
12510         type->data.klass is a SafeHandle, and in that case, return the
12511         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
12512         MONO_MARSHAL_CONV_SAFEHANDLE. 
12513
12514 2006-12-11  Miguel de Icaza  <miguel@novell.com>
12515
12516         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
12517         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
12518         calling emit_marshal_object.
12519
12520         (emit_marshal_safehandle): Implement marshalling of
12521         SafeHandle parameters (no ref support yet).
12522
12523         (MarshalAction): Document the defines as I implement
12524         them for SafeHandle.
12525
12526         (emit_marshal_object): indentation police.
12527
12528         * class-internals.h: Define MonoSafeHandle.
12529         Add safehandle_class to MonoDefaults type.
12530
12531         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
12532         list of classes to check for fields. 
12533
12534         * domain.c (mono_init_internal): Add SafeHandle to the list of
12535         mono_defaults loaded.
12536
12537 2006-12-15  Raja R Harinath  <rharinath@novell.com>
12538
12539         Fix #80253
12540         * reflection.c (mono_reflection_bind_generic_parameters): If the
12541         generic type definition is a type builder, ensure that it is fully
12542         initialized before instantiating it.  Kill some dead code.
12543
12544 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12545
12546         * object.c: clear the loader_error () before loading
12547         more metadata stuff (bug #80258).
12548
12549 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
12550
12551         * icall.c, icall-defs.h: type modifiers icalls for
12552         parameters and properties.
12553
12554 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12555
12556         * object.c, icall.c: fixed warnings.
12557
12558 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12559
12560         * marshal.c: fixed a couple of leaks and coding style in a few places.
12561
12562 2006-12-08  Dick Porter  <dick@ximian.com>
12563
12564         * process.c: Cope with NULL ProcessStartInfo arguments on windows
12565         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
12566         80173.
12567
12568 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12569
12570         * process.c: ProcessStartInfo may have only filename set and
12571         arguments can be NULL.
12572
12573 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12574
12575         * icall.c: fix leak found by Robert Jordan.
12576
12577 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12578
12579         * marshal.c, marshal.h: generate managed method to access an element
12580         of a multi-dimensional array.
12581
12582 2006-11-30  Paolo Molaro (lupus@ximian.com)
12583
12584         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
12585
12586 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12587
12588         * icall.c: back out GetFields () fix until the serialization code is
12589         fixed to not depend on the incorrect behaviour.
12590
12591 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12592
12593         * profiler.c: provide defaults if none are set.
12594
12595 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12596
12597         * Makefile.am, attrdefs.h: new public header file with
12598         constants for attributes for use by embedders.
12599
12600 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12601
12602         * icall.c: GetFields () fix for bug #80064.
12603
12604 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
12605
12606         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
12607         removed long unused icalls.
12608
12609 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
12610   
12611         * marshal.c: 
12612                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
12613                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
12614                 can be generated without a delegate class.
12615                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
12616         
12617         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12618
12619 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12620
12621         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
12622         #80069.
12623
12624 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12625
12626         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
12627         icall-def.h: added icalls needed by System.GC.
12628
12629 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
12630
12631         * loader.c: ensure the class in catch clauses is handled
12632         correctly for generics methods (fixes bug#79980).
12633
12634 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12635
12636         * monitor.h, monitor.c: added mono_locks_dump () function
12637         to help debug deadlocks involving managed locks.
12638
12639 2006-11-13  Dick Porter  <dick@ximian.com>
12640
12641         * file-io.c (get_file_attributes): If the file is a symlink try
12642         and get the stat data for the target, but also add the
12643         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
12644         the specs for the windows symlink support, but will probably have
12645         to be reworked when I have test data from a vista machine.  Fixes
12646         bug 79887.
12647
12648 2006-11-13  Dick Porter  <dick@ximian.com>
12649
12650         * gc.c (mono_domain_finalize): 
12651         * marshal.c (mono_delegate_begin_invoke): 
12652         * threadpool.c (socket_io_init, mono_thread_pool_init)
12653         (mono_thread_pool_finish): 
12654         * monitor.c (mono_monitor_try_enter_internal): 
12655         * threads.c (mono_thread_resume, mono_thread_init)
12656         (mono_thread_suspend_all_other_threads)
12657         (mono_thread_execute_interruption): 
12658         * appdomain.c (mono_domain_unload): Check for NULL error returns
12659         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
12660         75733.
12661
12662 2006-11-11  Miguel de Icaza  <miguel@novell.com>
12663
12664         * process.c
12665         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
12666         Only close the handle if the value of the handle is not
12667         INVALID_HANDLE_VALUE.  This just makes the process a bit more
12668         robust.
12669
12670         Improvement for #75733, so that we do not run into this problem. 
12671
12672         
12673         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
12674         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
12675         internal variables.  Fixes #79462 
12676         
12677
12678 2006-11-09  Dick Porter  <dick@ximian.com>
12679
12680         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12681         Use poll() not select().  Fixes bug 79397.
12682
12683 2006-11-09  Raja R Harinath  <rharinath@novell.com>
12684
12685         Fix #79872
12686         * assembly.c (mono_assembly_load_from_full): Check that the given
12687         image has an assembly manifest.
12688
12689 2006-11-09  Ankit Jain  <jankit@novell.com>
12690
12691         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
12692         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
12693         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
12694
12695 2006-11-07  Dick Porter  <dick@ximian.com>
12696
12697         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12698         Put the old resolver behaviour back for pre-2.0 profiles.
12699
12700 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
12701
12702         * threadpool.c: precise GC and locking fixes.
12703
12704 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12705
12706         * class.c: don't load types that have an explicit unaligned
12707         managed reference. Provide better info in the TypeLoad exception.
12708         Part of the fix for bug #79744.
12709         * object.c: use the correct check for class type load issues.
12710
12711 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12712
12713         * class.c: enforce alignment of fields with managed references
12714         even when Pack=1 is forced by the user (bug #77788).
12715
12716 2006-11-03  Dick Porter  <dick@ximian.com>
12717
12718         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12719         If the address reverse lookup fails, return it as the hostname
12720         anyway.  Fixes bug 79721.
12721
12722 2006-11-03  Dick Porter  <dick@ximian.com>
12723
12724         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
12725         Fix build on Windows.
12726
12727 2006-11-02  Dick Porter  <dick@ximian.com>
12728
12729         * icall-def.h: 
12730         * object-internals.h: 
12731         * exception.c (mono_get_exception_thread_interrupted): 
12732         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
12733         Fixes bug 74525.
12734
12735         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
12736         Check for pending Thread.Interrupt.
12737
12738 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
12739         * loader.c: Fixed bug 79684.
12740
12741 2006-10-27  Dick Porter  <dick@ximian.com>
12742
12743         * file-io.c (get_file_attributes): Force symlinks to directories
12744         to be returned as a regular file.  Fixes bug 79733.
12745 2006-10-26  Dick Porter  <dick@ximian.com>
12746
12747         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
12748         CreateFile to open a directory then we need to set the
12749         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
12750
12751 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12752
12753         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
12754         friends.
12755
12756 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12757
12758         * sgengc.c: small cleanup of timer code.
12759
12760 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12761
12762         * sgen-gc.c: fix some warnings and start adding support for
12763         complete object removal on domain unload.
12764
12765 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
12766
12767         * assembly.c: build_assembly_name should not consider a version
12768         number without build or revision number invalid. Fixes bug #79715.
12769
12770 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
12771
12772         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
12773         call kernel32 function OutputDebugString directly.
12774         
12775         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12776         
12777 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
12778
12779         * reflection.c: small cleanup, using a function to insert a MonoString
12780         in the string heap.
12781
12782 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
12783
12784         * reflection.c: moving GC fixes.
12785
12786 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12787
12788         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
12789         all the objects with finalizers belonging to an unloading appdomain.
12790
12791 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12792
12793         * sgen-gc.c: added ability to allocate even when the nursery is fully
12794         pinned and fixed a couple of bugs.
12795
12796 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12797
12798         * threads.h: Revert the last change for now.
12799
12800         * threads.h (mono_thread_get_pending_exception): Rename this to
12801         mono_thread_get_undeniable_exception ().
12802
12803 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
12804
12805         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
12806         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
12807         when fname does not refer to valid assembly. This result in a more
12808         meaningful error message.
12809         * exception.c: added mono_get_exception_bad_image_format2 which 
12810         constructs a BadImageFormatException using the ctor taking a custom
12811         message and the file name. Passing in a NULL msg results in a default
12812         message.
12813         * exception.h: define mono_get_exception_bad_image_format2 function.
12814         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
12815         when file name pointed to an invalid IL image. Use 
12816         mono_get_exception_file_not_found2 to construct FileNotFoundException,
12817         as this results in a more meaningful error message.
12818
12819 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
12822         #79465.
12823
12824 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * metadata.c (mono_type_size): Change the align parameter to guint32 for
12827         consistency with the other _size functions.
12828         (mono_type_stack_size): Ditto.
12829
12830         * class.c object.c icall.c: Fix warnings caused by the above change.
12831
12832         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
12833
12834         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
12835
12836         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
12837
12838 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12839
12840         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
12841         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
12842         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
12843         threadpool.h, threads-types.h: mark more internal functions.
12844
12845 2006-10-11  Dick Porter  <dick@ximian.com>
12846
12847         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12848         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
12849         reproduce the bug even before applying the fix.)
12850
12851 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
12852
12853         * reflection.c: allow retrieving attributes for arguments in generic
12854         methods (bug #79241).
12855
12856 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
12857
12858         * debug-mono-symfile.c: properly check fopen () result (found by
12859         coverity).
12860
12861 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
12862
12863         * reflection.c: make error message clearer and fixed two
12864         issuelets found by Coverity.
12865
12866 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
12867
12868         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
12869
12870 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12871
12872         * object-internals.h, gc-internal.h, profiler-private.h:
12873         mark internal functions.
12874
12875 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12876
12877         * reflection.c: put data in the text section.
12878         * icall.c: recognize more types in type_from_typename ().
12879         * process.c, marshal.c: added some GC FIXMEs.
12880
12881 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12882
12883         * loader.c: check for NULL before initializing.
12884
12885 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * gc.c (finalizer_thread): Use a non-alertable wait here.
12888
12889         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12890         until the correct solution is found.
12891
12892 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12893
12894         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12895         modules with no metadata. Fixes #79596.
12896
12897         * image.c (load_metadata_ptrs): Put back the error message when
12898         the #- heap is encountered since the support is not complete yet.
12899
12900 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12901
12902         * gc.c: do not allow the user to SuppressFinalize () a
12903         delegate because it would leak the trampoline if present.
12904
12905 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12908         PropertyPtr table.
12909
12910 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12911
12912         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12913
12914         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12915
12916         * row-indexes.h: Add definitions for *Ptr tables.
12917
12918         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12919
12920         * metadata.c (mono_metadata_translate_token_index): New helper function to
12921         translate table indexes used in uncompressed metadata.
12922         (mono_metadata_decode_table_row): Ditto.
12923         (mono_metadata_decode_table_row_col): Ditto.
12924
12925         * metadata.c: Add table schema for *Ptr tables.
12926
12927         * class.c loader.c: Use the new helper function to access the affected metadata
12928         tables.
12929         
12930         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12931         #38532.
12932         
12933 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12934
12935         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12936         sequences which can be unbounded in size. Fixes #79583.
12937
12938 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12939
12940         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12941         static initialization.
12942
12943         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12944
12945         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12946
12947         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12948
12949         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12950         ctor fails, i.e. throw the same exception on subsequent accesses.
12951         
12952 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12953
12954         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12955         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12956         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12957         Handle marshalling of interfaces and VARIANTs contained in structs.
12958         
12959         Code is contributed under MIT/X11 license.
12960         
12961 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12962
12963         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12964         
12965         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12966         mempool.
12967
12968 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12969
12970         * console-io.c: ignore previous SIGINT handler.
12971
12972 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12973
12974         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12975         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12976         #79460, #79461, #79485.
12977
12978         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12979
12980         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12981         #79217.
12982
12983 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12984
12985         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12986         could be generated from it.
12987
12988 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12989
12990         * rand.c: fix read loop to correctly handle EINTR.
12991
12992 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12993
12994         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12995         internal calls are defined to keep methods closer to the declaring
12996         type and allow a significant reduction in runtime relocations and
12997         memory usage.
12998
12999 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
13000
13001         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
13002         exception message to have FileNotFoundException use the default
13003         assembly load error message. Fixes bug #79426.
13004         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
13005
13006 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13007
13008         * threadpool.c: (start_thread_or_queue) use the root domain when
13009         creating the thread instead of the async object one.
13010
13011 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
13012
13013         * class.c, object.c, class-internals.h, reflection.c:
13014         for arrays, store element_size inside MonoClass (speedup
13015         for array object creation).
13016
13017 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
13018
13019         * icall.c: fixed CodeBase to use the file name and not the module
13020         name (bug #79365).
13021
13022 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
13023
13024         * mono-debug.c, mono-debug.h: export find_method as
13025         mono_debug_find_method ().
13026
13027 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
13028
13029         * debug-helpers.c, class-internals.h: added a few functions useful
13030         when debugging under gdb.
13031
13032 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13033
13034         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
13035         characters that need special handling.
13036
13037 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13038
13039         * mono-config.c: make the os/cpu specification more flexible,
13040         allowing lists and negation.
13041
13042 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
13043
13044         * marshal.c: COM Interop fixes. Handle case where method->klass.
13045         is interface. Handle BSTR/MonoString when null. Use CDECL as 
13046         calling convention on non-windows platforms. This is for
13047         compatibility with XPCOM and MainWin COM.
13048         
13049         Code is contributed under MIT/X11 license.
13050         
13051
13052 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
13055         correctly. Fixes #79217.
13056
13057         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
13058
13059 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
13060
13061         * mono-config.c: allow both an os and cpu attribute for dllmap
13062         and dllentry elemnets to enable a single config file to be used
13063         for multiple architectures.
13064
13065 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
13066
13067         * loader.c: MonoLoaderError was cleared too soon on load failure.
13068         Fixes bug #79424.
13069
13070 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
13071
13072         * icall.c: use the defining class vtable when accessing a
13073         static field, not a pobblibly derived class.
13074
13075 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13076
13077         * icall.c string-icalls.c: Remove references to unicode.h.
13078
13079         * unicode.h unicode.c Makefile.am: Remove these unused source files.
13080
13081         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
13082
13083         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
13084         indicating the image where custom marshaller types should be looked up.
13085         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
13086         custom marshallers, instead of corlib. Fixes #79425.
13087
13088 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
13089
13090         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
13091
13092 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
13093
13094         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
13095         Implement Environment.ProcessorCount.
13096         
13097         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
13098         Implement Environment.ProcessorCount.
13099         
13100         * icall.c: 
13101         Add Environment.ProcessorCount icall.
13102         
13103         Patch by Jason McFall.
13104
13105 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13106
13107         * assembly.c: don't append .exe/.dll when the filename already contains
13108         one of those extensions.
13109
13110 2006-09-12  Martin Baulig  <martin@ximian.com>
13111
13112         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
13113         to array interfaces.
13114
13115 2006-09-11  Martin Baulig  <martin@ximian.com>
13116
13117         * reflection.c (mono_image_build_metadata): Create the
13118         MethodImpl's after emitting all types and methods, so we don't
13119         need another fixup pass for them.
13120
13121 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13122
13123         * class.c (mono_class_from_name_case): Fix regression introduced by the last
13124         change.
13125
13126 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
13127
13128         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
13129         unload.
13130
13131 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
13132
13133         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
13134         args is not set. Fixes #78926.
13135
13136 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13137
13138         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
13139
13140         * image.c (load_class_names): Move this to class.c, and rename it to 
13141         'mono_image_init_name_cache'.
13142         (load_modules): Fix a warning.
13143
13144         * class.c icall.c image.c: Initialize image->name_cache lazily.
13145
13146         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
13147         on its name using information in the AOT file.
13148
13149         * class.c (mono_class_from_name): Use the new hook function.
13150
13151 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
13152
13153         * reflection.c (mono_param_get_objects): Handle enum default parameter values
13154         correctly.
13155
13156         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
13157         Fixes #79289.
13158         
13159 2006-09-06  Martin Baulig  <martin@ximian.com>
13160
13161         * icall.c (mono_lookup_internal_call): Small fix.
13162
13163 2006-09-05  Raja R Harinath  <rharinath@novell.com>
13164
13165         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
13166         double g_free.
13167
13168 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
13169
13170         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
13171         when --debug is specified.
13172
13173 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13174
13175         * class.c (setup_generic_array_ifaces): Fix a warning.
13176
13177 2006-09-04  Miguel de Icaza  <miguel@novell.com>
13178
13179         * Temporarily remove the patch to assemly.c that checks the
13180         assembly versions as it breaks our gacutil.
13181
13182 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
13185
13186         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
13187         a net 1.0 runtime.
13188
13189         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
13190         created using the default ctor. Fixes #79152.
13191         (mono_string_builder_to_utf16): Ditto.
13192
13193 2006-09-01  Martin Baulig  <martin@ximian.com>
13194
13195         Fix handling of the generic array interfaces.
13196
13197         * class-internals.h
13198         (MonoDefaults): Removed `generic_array_class' and added
13199         `generic_ilist' class.
13200
13201         * class.c
13202         (mono_bounded_array_class_get): Add the new generic array interfaces.
13203         (setup_generic_array_ifaces): New static method; create vtable
13204         entries for each method in the generic array interfaces.
13205
13206         * metadata.c
13207         (select_container): Allow "parent-less" generic methods.
13208
13209         * marshal.c
13210         (mono_marshal_get_generic_array_helper): New public method.
13211
13212         * icall.c
13213         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
13214         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
13215         moved the interncall into System.Array.
13216
13217 2006-09-01  Raja R Harinath  <rharinath@novell.com>
13218
13219         A few more cases of avoiding work on types with ->byref set.
13220         Has the real fix for #79238
13221         * icall.c (is_generic_parameter): New helper.
13222         (ves_icall_Type_GetGenericParameterPosition): Use it.
13223         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
13224         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
13225         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
13226         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
13227         reference types.
13228         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
13229         reference types.
13230         (ves_icall_Type_get_IsGenericInstance): Likewise.
13231         (ves_icall_Type_get_IsGenericType): Likewise.
13232
13233 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13234
13235         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
13236         class if possible.
13237
13238         * mempool.h (mono_mempool_get_allocated): New helper function.
13239
13240         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
13241         change.
13242
13243         * mempool.c: Fix warnings and the calculation of stats.
13244
13245         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
13246
13247         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
13248
13249         * loader.c (mono_get_method_from_token): Update method_count stat.
13250
13251         * class-internals.h (MonoStats): Add some stats.
13252
13253 2006-08-31 Robert Jordan  <robertj@gmx.net>
13254
13255         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
13256         with managed variants.
13257         All code is contributed under the MIT/X11 license.
13258         
13259 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13260
13261         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
13262         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
13263
13264         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
13265
13266         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
13267         with cycles in classes.
13268
13269         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
13270
13271         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
13272         missing a [MarshalAs] directive. Fixes #79203.
13273
13274         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
13275         klass->marshal_info. Fixes #79217.
13276
13277 2006-08-30  Martin Baulig  <martin@ximian.com>
13278
13279         Committing a patch from Joachim Ante <joe@otee.dk>:
13280         Add support for binary data symbol stores.
13281
13282         * debug-mono-symfile.c
13283         (mono_debug_open_mono_symbol_file): Renamed into
13284         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
13285         arguments.
13286
13287         * mono-debug.c
13288         (mono_debug_open_image): Added `raw_contents' and `size' args.
13289         (mono_debug_init_2_memory): New public function.
13290
13291 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
13292
13293         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
13294
13295 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13296
13297         * appdomain.c: implement support for ShadowCopyFiles.
13298
13299 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
13300
13301         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
13302         when value is NULL (and should remove CID #51).
13303
13304 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13305
13306         * image.c: moved 2 functions to ../utils.
13307
13308 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
13309
13310         * gc.c: cope with the target object of a GC handle being NULL
13311         (bug #78877).
13312
13313 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13314
13315         * class.c: recursively check parent's explicit implementations
13316         of interface methods (fixes bug #79125).
13317
13318 2006-08-19  Miguel de Icaza  <miguel@novell.com>
13319
13320         * filewatcher.c: Avoid warnings when building, do not redefine
13321         constants that are defined.
13322
13323         Remove warnings.
13324
13325 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13326
13327         * image.c: don't fail when the link points to an absolute path.
13328
13329 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
13330
13331         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
13332         Fix CID #3.
13333
13334 2006-08-17  Miguel de Icaza  <miguel@novell.com>
13335
13336         * image.c (full_path): A new method used to obtain the actual path
13337         of an assembly even in the presence of symbolic links.  
13338
13339         This is necessary for the case where we are running a binary that
13340         has been GACed, but we are using the "published" path name
13341         ($prefix/mono/1.0/blah.exe) which happens to point to the real
13342         file in the GAC.
13343
13344         This was the source of the failure for the `xsp' command with the
13345         recent AppDomain changes, as far as the runtime was concerned,
13346         there were two different assemblies: $prefix/mono/1.0/blah.exe and
13347         $prefix/mono/gac/blah/version/blah.exe.
13348
13349         (do_mono_image_open): use full path
13350
13351 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13352
13353         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
13354
13355 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
13356
13357         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
13358         domain_id is supplied. Fix CID #241 and corlib's unit tests.
13359
13360 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13361
13362         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
13363         small structures. Fixes #78990.
13364
13365 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
13368
13369         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
13370
13371 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13372
13373         * appdomain.c:
13374         * marshal.c: don't load all the assemblies from a domain into newly
13375         created ones. The new domains might have different rules and load
13376         assemblies from different locations. Fixes bug #76757.
13377
13378         Patch by Lluis. Conflicts resolved by Brian Crowell.
13379
13380 2006-08-16  Alp Toker  <alp@atoker.com>
13381
13382         * socket-io.c: First half of the fix for #79084.
13383         Set sa_size to the length of the content, not that of the struct.
13384         Don't add NULL suffix to the content, this should be done in
13385         managed code if needed.
13386
13387 2006-08-14  Raja R Harinath  <rharinath@novell.com>
13388
13389         Fix part of #79012
13390         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
13391         mono_metadata_parse_type returns NULL.
13392
13393 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
13394
13395         * normalization-tables.h : new file for string normalization data.
13396         * locales.c, locales.h, icall.c :
13397           added load_normalization_resource() for string normalization,
13398           and icall as well.
13399         * Makefile.am : added normalization-tables.h to the sources.
13400
13401 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
13402
13403         * marshal.c: Add more helper functions to reduce code duplication and use them
13404         everywhere.
13405
13406 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * marshal.c: Fix non-x86 stdcall warnings.
13409         
13410         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
13411         them everywhere.
13412
13413 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
13414
13415         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
13416         type check on multi-dimensional arrays. Fixes #79000.
13417
13418 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13419
13420         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
13421         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
13422         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
13423         * class-internals.h: add is_com_object to class structure.
13424         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
13425         null checks to COM object marshalling. Fix .ctor call on RCW.
13426         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
13427         
13428         All code is contributed under the MIT/X11 license.
13429
13430 2006-08-09  Dick Porter  <dick@ximian.com>
13431
13432         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
13433         racing mono_monitor_allocator_lock() somewhere, so don't delete
13434         the critical section for now.  Found by running and exiting
13435         monodevelop.
13436
13437 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
13440         (ves_icall_System_ComObject_FindInterface): Ditto.
13441         (ves_icall_System_ComObject_CacheInterface): Ditto.
13442
13443         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
13444         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
13445
13446 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13447
13448         * threadpool.c: treat pipes from process asynchronous reads as sockets
13449         when reading from them, so we get select/poll or epoll to wait for
13450         data.
13451
13452 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
13453
13454         * loader.c: Fix a typo (CID #233) in the null check.
13455
13456 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
13459         Hopefully fixes #78949.
13460         
13461         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
13462         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
13463         bytes. Fixes #78972.
13464
13465 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13466
13467         * filewatcher.c: we need to set errno here.
13468
13469 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13470
13471         * filewatcher.c: let Win32Exception get the error value.
13472
13473 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13474
13475         * filewatcher.c: translate errno into win32 errors for Win32Exception
13476         to know what happened.
13477
13478 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * threadpool.c: Fix more warnings.
13481
13482         * assembly.c (search_loaded): Fix warnings.
13483
13484         * threadpool.c (mono_thread_pool_finish): Fix warnings.
13485         (mono_async_invoke): Ditto.
13486
13487 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
13488
13489         * object.c (mono_remote_class_vtable): Need to create proxy vtable
13490         entries for __ComObject type in addition to ComImport types.
13491         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
13492         about hash table.
13493         
13494         All code is contributed under the MIT/X11 license.
13495
13496 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
13497
13498         * image.c: avoid tentative loading of modulerefs that contain
13499         no metadata (P/Invoke library names).
13500
13501 2006-07-28  Dick Porter  <dick@ximian.com>
13502
13503         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
13504         mono_loader_lock() somewhere, so don't delete the critical section
13505         for now.  Found by running and exiting monodevelop.
13506
13507 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13508
13509         * filewatcher.c: define the inotify syscalls when we're building on
13510         linux and have sys/syscall.h. The build system might not have support
13511         for inotify but the target system might have it.
13512
13513 2006-07-26  Miguel de Icaza  <miguel@novell.com>
13514
13515         * domain.c: Documentation updates.
13516
13517         * loader.c (mono_free_method): Do not release the method
13518         information if we are being profiled, as profilers will use this
13519         information at shut down to present some data to the user.
13520
13521         This is needed so that the profiler does not crash, as the
13522         profiler tends to keep MonoMethods around, and they might become
13523         invalid if we free these.
13524
13525         (mono_get_method_constrained): Return the original CIL stream
13526         method as well, so verification can be performed against it.
13527
13528 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13529
13530         * filewatcher.[ch]: support for inotify file system watcher.
13531         * icall.c: add new internal calls for the inotify file system watcher.
13532
13533 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13534
13535         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
13536         #78888.
13537
13538 2006-07-20  Dick Porter  <dick@ximian.com>
13539
13540         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
13541         warning.
13542
13543 2006-07-20  Dick Porter  <dick@ximian.com>
13544
13545         * threads.c (start_wrapper): Do the thread cleanup while we still
13546         hold a reference to its object.  Fixes bug 78123.
13547
13548 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
13549
13550         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
13551         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
13552           "managed-to-managed".
13553         * icall.c: Redirect string constructors that take sbyte* to
13554           ves_icall_System_String_ctor_RedirectToCreateString.
13555         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
13556           to CreateString () methods with matching signature.
13557         * reflection.c: Use original security informations for
13558           MONO_WRAPPER_MANAGED_TO_MANAGED.
13559         * security-manager.c: Use original security informations for
13560           MONO_WRAPPER_MANAGED_TO_MANAGED.
13561         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
13562           that is a placeholder and only its address should be used.
13563         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
13564           that is a placeholder and only its address should be used.
13565
13566 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13567
13568         Begin implementing COM Interop.
13569         * appdomain.c: Increment corlib version.
13570         * class.c: Set ComImport classes' parent to __ComObject.
13571         * loader.c: Mark cominterop methods as such.
13572         * domain.c: Add __ComObject class to MonoDefaults structure.
13573         * image.c: Add 2 hashtables to the image for COM Interop related methods
13574         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
13575         using the mempool allocator
13576         
13577         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
13578         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
13579         declaration for mono_metadata_type_dup_mp.
13580         
13581         * debug-helpers.c: Added strings for two additional wrapper types
13582         * object.c: Create proxy objects for ComImport classes
13583         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
13584         and added __ComObject class to MonoDefaults structure.
13585         
13586         * object-internals.h: Finish MonoRealProxy definition, and add definition of
13587         MonoComInteropProxy and MonoComObject.
13588         
13589         * marshal.c: Added support for COM Interop
13590         (signature_cominterop): Converts managed signature to corresponding
13591         unmanaged COM signature.
13592         (cominterop_get_function_pointer): gets unmanaged function pointer via
13593         COM object vtable
13594         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
13595         (cominterop_get_method_interface): returns interface type that method is defined on
13596         (mono_mb_emit_cominterop_call): emits native call to function pointer
13597         gotten from vtable
13598         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
13599         that matches signature of unmanaged function.
13600         (cominterop_get_native_wrapper): wrapper around adjusted method call.
13601         (cominterop_get_invoke): forwards call from proxy to __ComObject
13602         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
13603         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
13604         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
13605         
13606         * marshal.h: Added Marshal icall declarations.
13607         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
13608         so we can access them in finalizer
13609         
13610 2006-07-14  Dick Porter  <dick@ximian.com>
13611
13612         * object.c (mono_type_initialization_cleanup): Fix a race
13613         condition by temporarily commenting out the critical section
13614         deletion.
13615
13616 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
13617
13618         * reflection.c (create_custom_attr): Fix some warnings.
13619         (create_custom_attr_data): Ditto.
13620         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
13621         types. Fixes #78855.
13622
13623 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
13626
13627         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
13628
13629 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13630
13631         * reflection.c (resolve_object): Add support for DynamicMethod.
13632
13633         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
13634         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
13635
13636 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
13637
13638         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
13639         don't leak GPtrArray's pdata has we have no use (nor free) for it.
13640
13641 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
13642
13643         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
13644         Fixes #77888.
13645
13646 2006-06-30  Raja R Harinath  <rharinath@novell.com>
13647
13648         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
13649         slightly: remove a shadow local variable.
13650
13651 2006-06-29  Raja R Harinath  <rharinath@novell.com>
13652
13653         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
13654         definition that introduces the virtual function slot.
13655         Also fix Coverity #105.
13656
13657 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
13660         for dynamic assemblies. Fixes #78724.
13661
13662 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
13663
13664         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
13665         Fixes #78722.
13666
13667 2006-06-21  Martin Baulig  <martin@ximian.com>
13668
13669         * reflection.c
13670         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
13671         fixes #76484.
13672
13673 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
13676
13677 2006-06-20  Raja R Harinath  <rharinath@novell.com>
13678
13679         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
13680         nor TYPEREFs.
13681         * class.c (mono_class_create_from_typespec): Add 'context' argument.
13682         Inflate result if necessary.
13683         (mono_class_get_full): Remove old version.  Rename from
13684         'mono_class_get' and add 'context' argument.  Pass it to
13685         ..._create_from_typespec.
13686         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
13687         (mono_ldtoken): Revert change below.
13688
13689 2006-06-20  Martin Baulig  <martin@ximian.com>
13690
13691         * class.c (mono_ldtoken): Don't pass the generic context to
13692         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
13693
13694 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
13695
13696         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
13697         and later freeing it. Fixes #78638.
13698
13699 2006-06-15  Miguel de Icaza  <miguel@novell.com>
13700
13701         * icall.c (mono_class_get_throw): Revert over-zealous error
13702         throwing, the caller for mono_class_get_throw will cope with
13703         errors when classes are not properly initialized already.
13704
13705         The code still copes with loader exceptions though.
13706
13707         Fixes the regression in reftype1 and reftype3 from the CAS tests.
13708         
13709 2006-06-14  Miguel de Icaza  <miguel@novell.com>
13710
13711         Fixes the `make run1' version of RuntimeAbort (to be commited,
13712         source is in Bugzilla).
13713         
13714         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
13715         FALSE on class loading failure instead of returning true.
13716
13717         * class.c (mono_class_create_from_typedef): It is possible for
13718         mono_metadata_interfaces_from_typedef_full to fail if a class is
13719         not found, cope with this.
13720         
13721
13722 2006-06-14  Dick Porter  <dick@ximian.com>
13723
13724         * socket-io.c: 
13725         * process.c: Fix a bunch of signed/unsigned warnings from gcc
13726         4.1.1
13727
13728 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
13729
13730         * culture-info-table.h : oops, forgot to make it nsync with r61548.
13731
13732 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13733
13734         * icall.c: Another fix for building mono in Visual Studio.
13735
13736 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13737
13738         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
13739         
13740 2006-06-09  Martin Baulig  <martin@ximian.com>
13741
13742         * debug-mono-symfile.c: Put this back and really fix it this
13743         time. Sorry for all the trouble.
13744
13745 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * icall.c (mono_class_get_throw): Fix a warning.
13748         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
13749         ReflectionTypeLoadException if needed. Fixes #78606.
13750
13751         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
13752         (mono_class_init): Ditto.
13753
13754         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
13755         ref_only exceptions.
13756         (mono_loader_clear_error): Make this work even if there is no error.
13757
13758 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
13759
13760         * object-internals.h marshal.c marshal.h icall.c: Implement method 
13761         Marshal.GetComSlotForMethodInfo using internal call.
13762
13763 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
13764
13765         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
13766         a function for signalling it.
13767
13768         * class.c (mono_class_from_typeref): Use the new kind of loader error when
13769         a referenced assembly is not found.
13770
13771         * loader.c (mono_loader_error_prepare_exception): Add support for 
13772         LOADER_ERROR_ASSEMBLY. Fix formatting.
13773
13774 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
13775
13776         * domain.c appdomain.c class-internals.h marshal.c: Add support 
13777         for VARIANT marshalling on windows and increment corlib version
13778         since Variant struct was added.
13779
13780 2006-06-03  Miguel de Icaza  <miguel@novell.com>
13781
13782         * debug-mono-symfile.c: Revert Martin's previous patch which broke
13783         stack trace line information:
13784
13785         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
13786         (Martin) when looking up B which is between A and C, return A not C.
13787
13788         Bug is #78573.
13789
13790         Thanks to Alexander Olk for tracking this down.
13791
13792 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13793
13794         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
13795         
13796         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
13797         avoid clobbering its value.
13798         (mono_string_to_lpstr): Fix a warning on windows.
13799
13800 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13801
13802         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
13803
13804         * reflection.c loader.c: Removed references to 'dummy' flag.
13805
13806         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
13807
13808         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
13809         it gets GC tracking.
13810
13811         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
13812         GC tracking.
13813         
13814         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
13815
13816         * marshal.c threadpool.c: Update callers of mono_async_result_new.
13817
13818         * appdomain.c: Bump corlib version.
13819
13820 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13821
13822         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13823         CEE_STIND_REF when working with object references.
13824
13825 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13826
13827         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
13828         Fixes #78539.
13829
13830 2006-05-30  Miguel de Icaza  <miguel@novell.com>
13831
13832         * loader.c (method_from_memberref): Fix argument value for
13833         mono_loader_set_error_method_load (I was passing the MonoClass
13834         instead of the class name char *).
13835
13836 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13839         CEE_STIND_REF when working with object references.
13840
13841 2006-05-30  Martin Baulig  <martin@ximian.com>
13842
13843         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
13844         mono_method_full_name() change and replace the ':' with a '.'
13845         here.
13846
13847 2006-05-30  Martin Baulig  <martin@ximian.com>
13848
13849         * debug-mono-symfile.c
13850         (mono_debug_symfile_lookup_location): Fix the algorithm:
13851         when looking up B which is between A and C, return A not C.
13852
13853 2006-05-29  Martin Baulig  <martin@ximian.com>
13854
13855         * mono-debug.h
13856         (MonoDebugMethodInfo): Make the typedef public.
13857         (MonoDebugSourceLocation): New public struct.
13858
13859         * mono-debug.c
13860         (mono_debug_source_location_from_address): Removed.
13861         (mono_debug_source_location_from_il_offset): Removed.
13862         (mono_debug_il_offset_from_address): Removed.
13863         (mono_debug_address_from_il_offset): Removed.
13864         (mono_debug_lookup_method): New public function.
13865         (mono_debug_lookup_source_location): New public function; replaces
13866         the old mono_debug_source_location_from_*() functions; see the
13867         inline documentation.
13868         (mono_debug_free_source_location): New public function.
13869         (mono_debug_print_stack_frame): New public function; see the
13870         inline documentation.
13871
13872         * debug-mono-symfile.c
13873         (mono_debug_find_source_location): Renamed into
13874         mono_debug_symfile_lookup_location(); only take a
13875         `MonoDebugMethodInfo *' and an `offset' argument; added inline
13876         documentation.
13877         (mono_debug_find_method): Renamed into
13878         mono_debug_symfile_lookup_method().
13879
13880 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13881
13882         * assembly.c (mono_assembly_open_full): Dont overwrite the status
13883         returned by mono_image_open_full ().
13884
13885         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
13886         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
13887         #78517.
13888
13889         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13890         #78518.
13891
13892 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13893
13894         * class.c (mono_class_from_typeref): handle missing images
13895         earlier, deals with bug #78418.   Refactor code; 
13896
13897         Fix a warning introduced in my previous commit (some stale code
13898         from before I revisited my patch).
13899
13900         * class.c (mono_class_create_from_typedef): On failure, remove the
13901         class from the MonoImage->class_cache as the class is not
13902         initialized;   Fixes the leak pointed out by Paolo.
13903
13904 2006-05-25  Dick Porter  <dick@ximian.com>
13905
13906         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13907         DeleteCriticalSections until I figure out which one may still be
13908         sometimes locked when mono_thread_cleanup is called.
13909
13910 2006-05-24  Dick Porter  <dick@ximian.com>
13911
13912         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13913         of mono_thread_manage and back into its own function, so it can be
13914         called after the finalizer thread has finished.
13915
13916         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13917
13918 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13919
13920         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13921         Fixes #78495.
13922
13923         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13924         with non-blittable elements.
13925         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13926
13927 2006-05-24  Martin Baulig  <martin@ximian.com>
13928
13929         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13930         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13931
13932         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13933         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13934         `mono_debugger_event_handler' to NULL.
13935
13936 2006-05-24  Martin Baulig  <martin@ximian.com>
13937
13938         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13939
13940 2006-05-24  Martin Baulig  <martin@ximian.com>
13941
13942         * mono-debug-debugger.h
13943         (mono_debugger_create_notification_function): Added
13944         `MonoCodeManager *' argument.
13945
13946 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13947
13948         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13949
13950 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13951
13952         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13953         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13954         implementation.
13955
13956 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13957
13958         * icall.c: precise GC support: objects can't be stored in unmanaged
13959         memory anymore, even if they are kept alive by other references: since
13960         they can move the GC needs to be able to always find them.
13961
13962 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13963
13964         * object.c: precise GC support for static fields. Support
13965         for moving GCs: write barriers and pinned allocation for interned
13966         strings.
13967
13968 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13969
13970         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13971         structure.
13972
13973 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13974
13975         * class.c, gc.c: sgen and precise GC updates.
13976
13977 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13978
13979         * marshal.h, marshal.c: added write barrier wrapper and precise type
13980         fixes.
13981
13982 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13983
13984         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13985         support.
13986
13987 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13988
13989         * reflection.c: precise and sgen GC updates.
13990
13991 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13992
13993         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13994
13995 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13996
13997         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13998
13999 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
14000
14001         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
14002         MONO_TYPE_OBJECT. Fixes #78462.
14003
14004 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14005
14006         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
14007         and blittable types.
14008
14009 2006-05-17  Miguel de Icaza  <miguel@novell.com>
14010
14011         * class.c (mono_class_get_exception_for_failure): Implement parts
14012         of a TODO: if the loader error is set (instead of the class
14013         error), we return a Loader exception that can be properly thrown
14014         elsewhere.
14015
14016         This was exposed by some Winforms 2.0 code that I tried to run
14017         (Atsushi pointed me to it).
14018
14019 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
14020
14021         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
14022         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
14023         
14024         * marshal.c (emit_marshal_vtype): Add limited support for 
14025         UnmanagedType.LPStruct. Fixes #78427.
14026
14027         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
14028         Applied a patch from kangaroo to fix #77523.
14029
14030 2006-05-17  Martin Baulig  <martin@ximian.com>
14031
14032         * threads.c
14033         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
14034         (debugger_thread_created): Removed.
14035         (debugger_thread_exited): Removed.
14036
14037 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
14038
14039         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14040
14041         * object-internals.h (MonoReflectionResource): Sync with managed version.
14042
14043 2006-05-12  Wade Berrier <wberrier@novell.com>
14044
14045         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
14046
14047 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
14048
14049         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
14050         functions try to allocate from the image mempool.
14051
14052 2006-05-12  Dick Porter  <dick@ximian.com>
14053
14054         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
14055
14056 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
14057
14058         * object.c: The FieldGetter and FieldSetter methods require the full
14059         name of the class, not only the name. Fixes bug #78277.
14060
14061 2006-05-11  Miguel de Icaza  <miguel@novell.com>
14062
14063         * loader.c (method_from_memberref): Do not pass the NULL klass to
14064         mono_loader_set_error_() methods.  Pass the non-NULL value
14065         (class). 
14066
14067 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14068
14069         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
14070         (mono_assembly_close): Null out assembly->image->references after freeing it.
14071
14072         * image.c (mono_image_close): Free image->references.
14073         
14074         * reflection.c (mono_image_basic_init): Fix a small memory leak.
14075
14076 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
14077
14078         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
14079         before checking if it's NULL (g_assert).
14080
14081 2006-05-10  Martin Baulig  <martin@ximian.com>
14082
14083         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
14084         I thought I already killed that two months ago, but now it somehow reappeared.
14085
14086 2006-05-10  Martin Baulig  <martin@ximian.com>
14087
14088         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
14089
14090 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14091
14092         * reflection.c: Allocate memory for dynamically created methods in the image
14093         mempools.
14094
14095 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
14096
14097         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
14098         don't use the ad pointer before checking if it's NULL (g_assert).
14099
14100 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
14103         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
14104
14105         * marshal.c: Allocate all signatures from mempools.
14106
14107         * marshal.c: Allocate some more signatures from mempools.
14108
14109 2006-05-09  Miguel de Icaza  <miguel@novell.com>
14110
14111         * object.c (mono_load_remote_field): The code used to provide a
14112         temporary variable for returning results if the user did not
14113         provide a result pointer.  But our temporary variable was allocted
14114         on the satck.
14115
14116         Fix calling code to always pass a result area.   Coverity ID 103.
14117
14118 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14119
14120         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
14121         value, not the old. Fixes #78312.
14122         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
14123
14124         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
14125         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
14126         per-image cache.
14127
14128         * assembly.c (mono_assembly_close): Free image->references.
14129
14130         * assembly.c (mono_assembly_names_equal): Fix a warning.
14131         (mono_assemblies_cleanup): Cleanup more global data.
14132
14133         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
14134
14135         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
14136         ptr_cache and image->modules.
14137
14138         * image.c (mono_image_init): Allocate array_cache lazily.
14139         
14140 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14141
14142         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
14143         behavior was changed recently and has bad side effects.
14144
14145 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14146
14147         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
14148         
14149         * assembly.c (mono_assembly_close): Remove a debug printf.
14150
14151         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
14152
14153         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
14154         to also allow for temporary references between mono_image_open ()/close ().
14155
14156         * domain.c (get_runtimes_from_exe): Add a FIXME.        
14157
14158 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14159
14160         * marshal.c: Fix support for dynamic methods.
14161
14162         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
14163
14164         * marshal.c (mono_marshal_cleanup): New cleanup function.
14165
14166         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
14167         image mempools.
14168
14169         * class.c (mono_class_init): Fix leaking class->nested_classes.
14170
14171         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
14172
14173         * image.c (mono_image_init): Initialize the new cashes.
14174
14175         * image.c (mono_image_close): Destroy the new cashes.
14176
14177         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
14178
14179         * mempool.c (mono_mempool_strdup): New helper function.
14180
14181         * class-internals.h: Add prototype for mono_loader_unlock ().
14182
14183         * domain.c (mono_jit_info_table_find): Fix a warning.
14184         (mono_debugger_check_runtime_version): Ditto.
14185
14186         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
14187         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
14188         functions to these modules.
14189
14190         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
14191         metadata modules.
14192         
14193         * marshal.c (mono_free_bstr): Fix a warning.
14194
14195         * assembly.c (mono_assembly_open_full): Fix another small leak.
14196
14197         * object.c: Fix some unload leaks in the remoting code.
14198
14199         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
14200         function.
14201
14202         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
14203
14204         * reflection.c: Fix some unload leaks in dynamic assemblies.
14205
14206 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
14207
14208         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
14209         * marshal.h: Add BSTR support on Win32
14210         * icall.c: Add BSTR icalls
14211         * metadata.h: Add BSTR enums
14212
14213 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14214
14215         Work to catch the crash from #76795 and turn it into an
14216         exception.   As I stubbed out pieces of the VisualBasic support,
14217         I found a number of places where the code was failing and I added
14218         checks to those places. 
14219         
14220         * metadata.c (do_mono_metadata_parse_generic_class): Make this
14221         function return a status code.  If we fail to parse the signature
14222         from mono_metadata_parse_generic_inst, return FALSE.
14223
14224         * loader.c (mono_get_method_from_token): If we fail to load the
14225         method (mono_class_get) return NULL.   
14226
14227         * (method_from_memberref): Return NULL if we are unable to parse
14228         the method signature
14229
14230         (mono_loader_error_prepare_exception): Since we now use the
14231         loader_error flag internally to stop processing, and obtaining
14232         exceptions that might be thrown will walk this code path the
14233         proper way of going from a MonoLoaderError into a
14234         MonoException was convoluted.   This new routine encapsulates the
14235         process of turning the error into an exception and *clearing* the
14236         error afterwards.
14237         
14238 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14239
14240         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
14241         with missing assemblies), and to cope with:
14242
14243                 * Missing fieldref from a non-existing assembly.
14244                 * Missing methodref from a non-existing assembly.
14245
14246         The first batch of work to address *some* of the issues from 76661.
14247         
14248         * object.c (mono_class_create_runtime_vtable): If we fail to
14249         initialize the class raise the exception here. 
14250
14251         * metadata.c (mono_class_get_overrides_full): If any methods fail
14252         to load return the failure to the caller.
14253
14254         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
14255         flagging assemblies that failed to load.   
14256
14257         Do not crash if we are unable to load the assembly.
14258
14259         (mono_assembly_close): Do nothing with REFERENCE_MISSING
14260         assemblies. 
14261
14262         * loader.c (mono_loader_set_error_type_load): Change the
14263         convention to always pass unallocated strings, so we make our own
14264         copies (I know our own code had duplicated strings before, but
14265         this keeps the normal conventions).
14266         (method_from_memberref): Call mono_loader_set_error_method_load
14267         for all possible failures of loading the class. 
14268         Remove assert, turn into a loader error.
14269
14270         (mono_loader_error_to_exception): Move this routine from mini
14271         (mini_loader_error_to_exception) there was no need to have that in
14272         mini. 
14273
14274         * class.c (mono_class_from_typeref): If we were not able to load
14275         the assembly with mono_assembly_load_reference, call the
14276         mono_loader_set_error_type_load to register the problem.
14277
14278         (mono_class_setup_fields): If we fail to load the type from
14279         mono_metadata_parse_type_full, call mono_class_set_failure and
14280         break from the loop.
14281
14282         If class->exception_type is set, we do not layout the fields as
14283         that might crash the runtime, and instead return (from breaking
14284         from the previous loop).
14285
14286         (mono_class_setup_vtable): This now returns a boolean indicating
14287         whether the table was properly setup.   The decision is driven by
14288         mono_class_get_overrides_full which might run into non-existing
14289         methods. 
14290         
14291         (mono_class_init): Returns TRUE on success or FALSE if there was a
14292         problem in loading the type (incorrect assemblies, missing
14293         assemblies, methods, etc).
14294
14295         When we call mono_class_setup_fields we also check for a potential
14296         error inside this call (either a class exception or a general
14297         loader exception).
14298
14299         (mono_class_create_from_typedef): If the parent fails to load
14300         (calling mono_class_get_full) return NULL.
14301         
14302         ** Important **
14303
14304         calls to mono_metadata_parse_type_full should be checked
14305         everywhere and set the mono_class_set_failure
14306         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
14307
14308         The current patch checks the places where my manually constructed
14309         tests show the errors are showing up, but we should do it
14310         everywhere. 
14311
14312         ** Important2 **
14313
14314         mono_class_init return values should be tested everywhere, like
14315         the previous case this is something that we should audit
14316         everywhere and not only on the cases exposed by the tests I
14317         created. 
14318
14319 2006-04-26  Miguel de Icaza  <miguel@novell.com>
14320
14321         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
14322         boolean parameter and instead pass the information on `options'
14323         parameter (FileOptions).
14324
14325         * icall.c: Register the new signature for MonoIO.Open.
14326
14327         * debug-helpers.c (dis_one): Trying to understand how coverity
14328         works.  Fix Run 5, item 78.
14329
14330 2006-04-26  Dick Porter  <dick@ximian.com>
14331
14332         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
14333         dereference.
14334
14335 2006-04-25  Martin Baulig  <martin@ximian.com>
14336
14337         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
14338
14339         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
14340         debugger_thread_created().
14341         (debugger_gc_push_all_stacks): Don't handle the main thread in any
14342         special way.
14343         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
14344         (mono_debugger_finalize_threads): New function; undo the effects
14345         of mono_debugger_init_threads().
14346         (mono_debugger_create_all_threads): Removed.
14347
14348 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14349
14350         * image.c (mono_image_close): Tidy up trace messages.
14351
14352         * assembly.c (mono_assembly_close): Ditto.
14353
14354         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
14355         no longer references an already freed assembly. Fixes #78168.
14356
14357 2006-04-21  Dick Porter  <dick@ximian.com>
14358
14359         * threads.c (mono_thread_detach): Fix reference counting when
14360         detaching threads.
14361
14362 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
14363
14364         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
14365         #78155.
14366
14367 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14368
14369         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
14370         (mono_type_to_stind): Ditto.
14371
14372         * marshal.c: Use the new helper functions to simplify code.
14373
14374         * image.c (mono_image_close): Add some code for help debug assembly unloading
14375         problems.
14376
14377         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
14378         image mempool.
14379
14380         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
14381         assembly was already loaded in another appdomain. Fixes #78083.
14382
14383 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
14384
14385         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
14386         referenced assemblies.
14387         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
14388
14389         * domain.c (mono_domain_free): Add a trace message.
14390
14391         * appdomain.c (add_assemblies_to_domain): Ditto.        
14392
14393         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
14394         field.  
14395
14396 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14397
14398         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
14399
14400 2006-04-12  Martin Baulig  <martin@ximian.com>
14401
14402         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
14403         `USE_INCLUDED_LIBGC'.   
14404
14405 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
14408         the patch contains ../ and a small directory name later. Hopefully fixes
14409         #78035.
14410
14411 2006-04-10  Martin Baulig  <martin@ximian.com>
14412
14413         Clean up the debugger's thread-handling code.
14414
14415         The debugger's thread-handling code has been moved from
14416         ../mini/debug-debugger.c to threads.c.  We now iterate directly
14417         over the `threads' hash, keep track of exiting threads and also
14418         use proper locking.
14419
14420         We can now debug XSP and XSP based applications with the debugger.
14421
14422         * object-internals.h (MonoThread): Added `gpointer end_stack'.
14423
14424         * threads.h
14425         (MonoThreadCallbacks): Removed; this was only used by the debugger.
14426         (mono_install_thread_callbacks): Likewise.      
14427
14428         * threads.c (mono_thread_callbacks): Removed.
14429         (debugger_thread_created, debugger_thread_exited): New static functions.
14430         (start_wrapper): Call debugger_thread_created().
14431         (thread_cleanup): Call debugger_thread_exited().
14432         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
14433         (mono_debugger_init_threads): New public function.
14434         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
14435         iterate directly over the `threads' hash and also use proper locking.
14436
14437         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
14438
14439         * mono-debug-debugger.h
14440         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
14441
14442 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14443
14444         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
14445         argument type=array. Fixes #78057.
14446
14447 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
14448
14449         * culture-info-table.h : regenerated. Fixed bug #69652.
14450
14451 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14452
14453         * loader.c metadata.c: Reapply a variant r59116.
14454         
14455         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
14456
14457         * class.c (mono_class_setup_interface_offsets): New internal function.
14458
14459         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
14460         interfaces too. Fixes #77398.
14461
14462         * reflection.c (encode_cattr_value): Add support for 
14463         parameter type=object, argument type=array.
14464         (load_cattr_value): Ditto. Fixes #77916.
14465
14466         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
14467         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
14468
14469         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
14470         a byval char array and CharSet is Ansi.
14471
14472         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
14473
14474 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
14475
14476         * metadata.c: Add some locking comments.
14477         
14478         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
14479         mempool.
14480         (mono_metadata_free_method_signature): Don't free the signature itself.
14481
14482         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
14483
14484         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
14485         reference the same MonoImage.
14486         (mono_assembly_load_from_full): Add an assert.
14487
14488 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14489
14490         * image.c (mono_image_close): Don't put the image we are about to free into the
14491         loaded_images_guid_hash.
14492
14493         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
14494         to reduce code duplication.
14495
14496         * marshal.c: Register the native functions called by this module as icalls, to
14497         somewhat centralize the creation of MonoMethodSignature's.
14498
14499         * loader.c (mono_method_signature): Add a cache for method signatures.
14500
14501         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
14502         the parameter attributes of a method.
14503         (mono_metadata_parse_method_signature_full): Refactored the computation of
14504         parameter attributes into a separate function. Also avoid one allocation in
14505         most cases.
14506
14507         * assembly.c (mono_assembly_close): Ditto.
14508
14509         * image.c (mono_image_close): Log trace messages with INFO level.
14510
14511         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
14512
14513         * image.c reflection.c: Correct reference counting of image modules.
14514         
14515         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
14516         of this function from the image mempool.
14517         
14518         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
14519         to allow more cached types to be used.
14520
14521         * mono-debug.c (mono_debug_add_method): Appled patch from
14522         David S. Miller  <davem@sunset.davemloft.net>: Access 
14523         minfo->lexical_blocks[] entry elements using read32().
14524
14525 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14526
14527         * loader.c (mono_free_method): No longer free the method header for non-dynamic
14528         methods as it is allocated from the mempool.
14529
14530         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
14531         image mempool.
14532
14533         * metadata-internals.h: Add comments describing the reference counting scheme
14534         used for MonoImage and MonoAssembly.
14535
14536         * image.c assembly.c reflection.c: Rework reference counting of images and 
14537         assemblies so they are freed when the runtime is shut down. Free some 
14538         additional memory structures when an image is unloaded.
14539         
14540 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14541
14542         * class.c loader.c reflection.c: Allocate more data structures in
14543         the image mempool.
14544
14545 2006-03-31  Miguel de Icaza  <miguel@novell.com>
14546
14547         * icall.c
14548         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
14549         build on pre glib 2.4 systems.
14550
14551 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14552
14553         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
14554
14555         * icall.c: Fix some warnings.
14556
14557 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
14558
14559         * culture-info-table.h : regenerated.
14560
14561 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
14562
14563         * threads.c, object-internals.h, verify.c: changed the culture caching
14564         code to use a normal MonoArray for storage so the GC can keep track of
14565         them easily. Fixed bits of the cache logic, too and simplified the
14566         code.
14567
14568 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
14569
14570         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
14571         thread for non-Boehm GCs.
14572
14573 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
14574
14575         * domain.c, object.c, domain-internals.h: reduce the amount of memory
14576         needed to keep track of the data for static fields.
14577
14578 2006-03-29  Raja R Harinath  <rharinath@novell.com>
14579
14580         Fix #75172
14581         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
14582         for interface classes.  Use 'num_methods' instead.
14583         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
14584         before using '->vtable_size' field.
14585
14586 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14587
14588         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
14589         doesn't contain managed pointers, so use a normal hashtable.
14590
14591 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14592
14593         * reflection.c, class-internals.h, domain.c: fixed handling of types
14594         used as values for objects in custom attributes (bug #77915):
14595
14596 2006-03-24  Martin Baulig  <martin@ximian.com>
14597
14598         * class.c (mono_class_setup_fields): Added support for generic
14599         instances; fixes #77580.
14600
14601 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14602
14603         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
14604
14605 2006-03-24  Dick Porter  <dick@ximian.com>
14606
14607         * file-io.c (get_file_attributes): More stat macro breakage.
14608         Fixes bug 77759.
14609
14610 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
14611
14612         * profiler.c: added the file=filename option in the default profiler
14613         to output the profile data to filename.
14614
14615 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14616
14617         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
14618         bug #77877.
14619
14620 2006-03-22  Martin Baulig  <martin@ximian.com>
14621
14622         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
14623         allocated `MonoClassField *' in `fb->handle'.
14624
14625 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14626
14627         * class.c, image.c, metadata-internals.h: implemented new mechanism to
14628         allocate interface ID to save memory and allow better ID reuse on
14629         appdomain unload. setup_generic_vtable () removal from Martin.
14630
14631 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14632
14633         * object.h, appdomain.c, domain.c, exception.c, icall.c,
14634         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
14635         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
14636         write barriers for reference stores with managed objects accessed with
14637         C structures in the runtime and in embedding programs.
14638
14639 2006-03-20  Raja R Harinath  <rharinath@novell.com>
14640
14641         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
14642         'interface_id' and 'max_interface_id' fields of MonoClasses
14643         representing open generic types.
14644
14645 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
14646
14647         * object.h, object.c, icall.c: added functions to deal with
14648         storing valuetypes that contain references in managed objects.
14649         * reflection.c, string-icalls.c, threads.c, marshal.c: small
14650         fixes and comments around uses of mono_array_addr ().
14651
14652 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
14653
14654         * object.h, icall.c, monitor.c: object.GetHashCode ()
14655         implementation that supports the moving garbage collector.
14656
14657 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14658
14659         * icall.c, threads-types.h, threads.c: implemented finalizer for
14660         LocalDataStoreSlot.
14661
14662 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14663
14664         * metadata.c (mono_type_size): Add a fixme.
14665         (mono_type_stack_size): Ditto.
14666
14667         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
14668         'type_forwarders' field.
14669
14670         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
14671         attribute from net 2.0.
14672
14673         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
14674         from class.c.
14675
14676         * class.c (mono_class_setup_fields): Fix a warning.
14677         
14678         * class.c (mono_class_from_name): Add support for assemblyref entries
14679         in the EXPORTEDTYPE table.
14680
14681         * reflection.c: Add support for handling type forwarders under net 2.0.
14682
14683         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
14684         
14685 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14686
14687         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
14688         overwriting entries in ModuleBuild->types, also clean up the code
14689         a little. Fixes #77774.
14690
14691 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14692
14693         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
14694         load friend assembly info when present.
14695
14696 2006-03-14  Raja R Harinath  <rharinath@novell.com>
14697
14698         Fix crasher on gtest-158.cs.
14699         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
14700         the return value if the MonoClass we want is yet in an
14701         inconsistent state.
14702         * class.c (mono_class_create_from_typedef): Add an comment
14703         explaining an order dependency between mono_class_setup_parent and
14704         mono_class_setup_mono_type.
14705
14706 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14707
14708         * class.c: documentation updates and events bug fix.
14709
14710 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
14711
14712         * class.c: some cleanup, locking fixes.
14713
14714 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14715
14716         * class.c: fix the generics code to setup nested
14717         type info to the instantiated type (bug #77770).
14718
14719 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14720
14721         * marshal.c: fixed a few type correctness issues.
14722
14723 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14724
14725         * loader.c: the Set/Get/Addrtess array methods should be public.
14726
14727 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14728
14729         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
14730         
14731         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
14732         info->wrapper.
14733
14734 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14735
14736         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
14737
14738         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
14739
14740         * mempool.c (mono_mempool_alloc): Speed this up a bit.
14741         (mono_mempool_alloc0): Ditto.
14742
14743 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14744
14745         * socket-io.c:
14746         (create_object_from_sockaddr): it was allocating 4 extra bytes
14747         for the AF_UNIX data. Fixes bug #77747.
14748
14749 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14750
14751         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
14752
14753 2006-03-09  Dick Porter  <dick@ximian.com>
14754
14755         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
14756         Fixes bug 76966 again.
14757
14758 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
14759
14760         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
14761         names from r57532
14762         * appdomain.c: Bumped corlib version to 48 (due to r57532)
14763
14764 2006-03-07  Martin Baulig  <martin@ximian.com>
14765
14766         * object.c
14767         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
14768
14769 2006-03-07  Martin Baulig  <martin@ximian.com>
14770
14771         * class.c
14772         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
14773         regression introduced in r56970; see gtest-252.cs.
14774
14775         * loader.c (mono_get_method_constrained): Correctly handle generic
14776         methods; see gtest-253.cs.
14777
14778 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14779
14780         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
14781
14782 2006-03-04  Martin Baulig  <martin@ximian.com>
14783
14784         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
14785         compute the parent type at runtime, just like we're already doing
14786         it for interfaces.
14787
14788         * reflection.c
14789         (mono_reflection_bind_generic_parameters): Don't compute the
14790         parent type anymore.
14791
14792         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
14793
14794 2006-03-04  Martin Baulig  <martin@ximian.com>
14795
14796         * mono-debug-debugger.h
14797         (mono_debugger_create_notification_function): Allocate memory at
14798         runtime and return a pointer to it.
14799
14800 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
14801
14802         * assembly.c: Fix windows build.
14803         
14804         * assembly.c: Fix build.
14805
14806         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
14807
14808         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
14809         
14810 2006-03-03  Dick Porter  <dick@ximian.com>
14811
14812         * process.c
14813         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14814         Check parameters before dereferencing them.  Fixes Aaron's part of
14815         bug 77393.
14816
14817 2006-03-03  Raja R Harinath  <rharinath@novell.com>
14818
14819         Fix performance regression.
14820         * loader.c (find_method_in_class): Add 'from_class' argument.
14821         Rename 'klass' argument to 'in_class'.  The signature is compared
14822         against the method in 'in_class', and the corresponding method is
14823         returned from 'from_class'.
14824         (find_method): Walk both 'in_class' and 'from_class' in parallel.
14825         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
14826         type definition and generic instantiation in parallel.
14827         (mono_get_method_constrained): Update to changes.
14828
14829 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14830
14831         * threads.c: make sure the domain is correct, too when doing
14832         mono_thread_attach ().
14833
14834 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
14835
14836         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
14837         windows. Fixes #77683.
14838
14839 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14840
14841         * object.h, *: introduced specific way to set elements of an array
14842         of references to be used as write barrier. Still need to audit the
14843         uses of mono_array_addr.
14844
14845 2006-03-01  Miguel de Icaza  <miguel@novell.com>
14846
14847         * object-internals.h: New field to cache the assmebly name, patch
14848         from Tambet Ingo (tambet@ximian.com)
14849
14850 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14851
14852         * decimal.h, class-internals.h, metadata-internals.h,
14853         file-io.h: mark a few function declarations as internal, to
14854         reduce the number of PLT entries.
14855
14856 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14857
14858         * file-io.c: fix typo in warning message.
14859
14860 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
14861
14862         * loader.c: on unix, lookup the "*A" version of a function
14863         if charset is auto as a second option before failing.
14864
14865 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14866
14867         * class.h (mono_class_inflate_generic_method): Revert to two
14868         argument version.
14869         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
14870         (mono_class_inflate_generic_method_full): Add.
14871         * class.c (mono_class_inflate_generic_method_full): Rename from
14872         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
14873         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
14874         * loader.c, reflection.c: Update to changes.
14875
14876 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14877
14878         * icall.c: const fixes and small improvements.
14879
14880 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14881
14882         * threadpool.c: for asynchronous connect(), enable the same workaround
14883         for BSD 6 as for the Mac. Fixes bug #77637.
14884
14885 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14886
14887         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
14888         formatted classes. Fixes #77524.
14889
14890 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14891
14892         * class.c (inflate_generic_type): Add a couple more
14893         micro-optimizations.
14894         (inflate_generic_context): Don't use the 'gmethod' from
14895         'inflate_with'.
14896         (mono_class_inflate_generic_method): If the method has generic
14897         parameters, but the passed-in context doesn't have a 'gmethod',
14898         create one.  Use the possibly simplified generic instantiation
14899         from the declaring class instead of the one passed in.
14900
14901 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14902
14903         Make generic method signature and method header handling lazy.
14904         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14905         (inflate_generic_header): Likewise.
14906         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14907         parameter to avoid inflating types.
14908         (mono_get_inflated_method): Empty out.
14909         * class.h (mono_class_inflate_generic_method): Update to changes.
14910         * loader.c (mono_get_method_from_token): Don't parse signature for
14911         generic methods, nor methods of generic classes.
14912         (mono_method_signature): Rename from 'mono_method_signature'.
14913         Inflate signature on demand.
14914         (mono_method_get_header): Inflate method header on demand.
14915         * reflection.c: Update to changes.
14916
14917 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14918
14919         * metadata.c (mono_metadata_inflate_generic_inst): If the
14920         instantiation is closed, don't bother expanding it in the new
14921         context.
14922         * class.c (inflate_generic_class): If the generic instantiation
14923         doesn't change after inflation, return the argument itself.
14924         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14925         Add bounds checks.
14926         (inflate_generic_context): If neither the generic class nor the
14927         generic method instantiations change, return the original context.
14928         * reflection.c (mono_method_get_object): Do
14929         'mono_get_inflated_method' before accessing the ->klass field.
14930         (inflate_mono_method): Don't create a MonoGenericMethod unless
14931         necessary.
14932         (inflate_method): Don't pass a constructed type as the declaring
14933         type of a methodbuilder.
14934
14935 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14936
14937         * object.c: fix memory overwrite.
14938
14939 2006-02-22  Dick Porter  <dick@ximian.com>
14940
14941         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14942         it doesn't work any more.
14943         (mono_threads_request_thread_dump): Fix unused variable warnings.
14944
14945 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14946
14947         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14948         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14949         the public header file.
14950
14951 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14952
14953         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14954
14955 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14956
14957         * class-internals.h, object.c: reduce the size of MonoVTable
14958         and store the interface_offsets array at negative offsets.
14959
14960 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14961
14962         * metadata.c: tweak table descriptors data structures to reduce
14963         size and runtime relocations.
14964
14965 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14966
14967         * marshal.c: fix some types and opcodes to be type-safe
14968         in marshaling wrappers.
14969
14970 2006-02-21  Ankit Jain  <jankit@novell.com>
14971
14972         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14973
14974 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14975
14976         * metadata.c (get_constraints): Relax debugging checks for monodis.
14977
14978 2006-02-21  Ankit Jain  <jankit@novell.com>
14979
14980         * metadata.c (mono_metadata_load_generic_params): Move the code
14981         checking for ambiguous generic params from here to mono/dis/get.c
14982         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14983
14984 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14985
14986         Fix assertion triggered when compiling nemerle.
14987         * class.c (mono_get_shared_generic_inst): Rename from
14988         get_shared_inst and make non-static.
14989         * loader.c (mono_get_shared_generic_method): New.  Used to create
14990         the MonoGenericContext-equivalent of a MonoGenericContainer.
14991         (mono_get_method_from_token): Initialize the 'context' field of
14992         the created MonoGenericContainer.
14993         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14994         * metadata.c (get_constraints): Add sanity check.
14995         * class-internals.h: Add new internal methods.
14996
14997         * reflection.c (verify_safe_for_managed_space): New sanity check.
14998         Currently checks that owner-less generic parameters aren't allowed
14999         in managed space.
15000         (mono_type_get_object): Use it.
15001         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
15002         that are now in mono_type_get_object.
15003         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
15004
15005 2006-02-19  Raja R Harinath  <harinath@gmail.com>
15006
15007         * metadata.c (mono_type_create_from_typespec): Rename from
15008         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
15009         argument and caching of types in the generic container.
15010         (unwrap_arrays, find_generic_param): Remove.
15011         * metadata-internals.h: Update.
15012         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
15013
15014 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
15015
15016         * class.c (mono_class_get_exception_for_failure): Fix a warning.
15017
15018         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
15019         return values. Fixes #77581.
15020
15021         * class.c (mono_fnptr_class_get): Switch name and name_space.
15022
15023         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
15024         classes and add support for [In, Out] attributes.
15025         (mono_marshal_free_asany): Ditto. Fixes #77524.
15026
15027 2006-02-18  Raja R Harinath  <harinath@gmail.com>
15028
15029         * class.c (mono_class_from_generic_parameter): Make more robust to
15030         incomplete MonoGenericContainers from monodis.
15031
15032 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
15033
15034         * class-internals.h: added some more exception types.
15035         * class.c, metadata.c: added a few checks to handle missing
15036         types.
15037
15038 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15039
15040         Use owner-less generic-params some more.
15041         * class.c (my_mono_class_from_generic_parameter): Remove.
15042         (mono_class_from_generic_parameter): Handle null image,
15043         param->name and param->owner.
15044         (mono_class_from_mono_type): Update.
15045         (mono_class_create_from_typespec): Remove 'container' parameter.
15046         If that parameter is non-null, the result is always inflated by
15047         'mono_class_get_full' anyway.
15048         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
15049         parameter.
15050         (mono_class_get_full): Update.
15051
15052         * class.c (inflate_generic_type) [GENERICINST]: If the generic
15053         instance is not open, don't bother inflating.
15054         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
15055         parse metadata for inflated classes.
15056         (_mono_class_get): Change GenericContext* parameter to
15057         GenericContainer*.
15058         (mono_class_create_from_typespec): Likewise.  Simplify, and
15059         implement trivially.  All the cases are handled in
15060         mono_class_from_mono_type.  Don't inflate returned class.
15061         (mono_class_get_full): Delegate GENERICINST optimization to
15062         inflate_generic_type.
15063         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
15064
15065 2006-02-16  Dick Porter  <dick@ximian.com>
15066
15067         * socket-io.c (create_object_from_sockaddr): Fix typo.
15068         (create_sockaddr_from_object): Check array lengths before
15069         potentially accessing items off the end.
15070         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
15071         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
15072         (ves_icall_System_Net_Sockets_Socket_Send_internal)
15073         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
15074         length checks to avoid wraparound overflows.
15075         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
15076         contents of the array of sockets
15077         (hostent_to_IPHostEntry2)
15078         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
15079         Check return value of inet_ntop ().
15080         (addrinfo_to_IPHostEntry): Fix typo
15081
15082 2006-02-16  Raja R Harinath  <rharinath@novell.com>
15083
15084         Type metadata parsing doesn't use generic-instantiation information.
15085         * metadata.c (mono_metadata_parse_array_full): Change
15086         MonoGenericContext* parameter to MonoGenericContainer*.
15087         (mono_metadata_parse_type_full): Likewise.
15088         (mono_type_create_from_typespec_full): Likewise.
15089         (mono_metadata_parse_mh_full): Likewise.
15090         (mono_metadata_parse_generic_inst): Likewise.
15091         (do_mono_metadata_parse_generic_class): Likewise.
15092         (do_mono_metadata_parse_type): Likewise.
15093         * metadata-internals.h: Update to changes.
15094         * class.c (mono_class_find_enum_basetype): Likewise.
15095         (mono_class_setup_fields): Likewise.
15096         (mono_class_create_from_typespec): Likewise.
15097         * loader.c (method_from_methodspec): Likewise.
15098         (mono_get_method_from_token): Likewise.
15099         (mono_method_get_header): Likewise.
15100
15101 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15102
15103         * marshal.c: handle additional GENERICINST case (patch from
15104         Thong Nguyen <tum@veridicus.com>).
15105         Fix a few cases where LDIND_I/STIND_I was used for references.
15106
15107 2006-02-16  Raja R Harinath  <rharinath@novell.com>
15108
15109         * reflection.c (mono_reflection_get_token): Remove unused variable.
15110
15111 2006-02-16  Martin Baulig  <martin@ximian.com>
15112
15113         * reflection.c (mono_reflection_get_token): Add support for fields
15114         in instantiated generic types.
15115
15116         * icall.c
15117         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
15118
15119 2006-02-15  Martin Baulig  <martin@ximian.com>
15120
15121         * icall.c
15122         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
15123         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
15124         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
15125         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
15126
15127 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
15128
15129         * class.c, metadata.c, metadata.h, object.c, icall.c,
15130         marshal.c: changed mono_type_get_underlying_type () to do
15131         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
15132         Fixed handling of instantiated generic valuetypes (bug #75479).
15133
15134 2006-02-15  Raja R Harinath  <rharinath@novell.com>
15135
15136         * metadata.c (mono_metadata_decode_signed_value): Simplify.
15137         Delegate to mono_metadata_decode_value, and work on the returned value.
15138
15139         * icall.c (ves_icall_MonoType_GetGenericArguments):
15140         Add consistency check here too.
15141         
15142 2006-02-15  Ankit Jain  <jankit@novell.com>
15143
15144         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
15145         char/short etc.
15146
15147 2006-02-15  Ankit Jain  <jankit@novell.com>
15148
15149         * metadata.c (mono_metadata_decode_signed_value): New function to decode
15150         signed values, used only for representing lower bounds of arrays.
15151         (mono_metadata_parse_array_full): Use new
15152         mono_metadata_decode_signed_value to decode lower bounds.
15153
15154 2006-02-14  Martin Baulig  <martin@ximian.com>
15155
15156         * reflection.c
15157         (mono_reflection_get_token): Support "MonoGenericMethod" and
15158         "MonoGenericCMethod" and allow generic instances / methods.
15159
15160 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15161
15162         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
15163         to obtain the terminal size using an ioctl.
15164
15165         * object.c (mono_nullable_init): Revert this as nullable reference
15166         types are not valid.
15167         (mono_nullable_box): Ditto.
15168
15169 2006-02-09  Dick Porter  <dick@ximian.com>
15170
15171         * threads.c (mono_thread_detach): Drop a reference to the thread
15172         we're detaching.
15173
15174 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15175
15176         * object.c (mono_nullable_init): Handle nullable reference types.
15177         (mono_nullable_box): Ditto. Fixes #77446.
15178
15179 2006-02-07  Martin Baulig  <martin@ximian.com>
15180
15181         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
15182
15183 2006-02-07  Ankit Jain  <jankit@novell.com>
15184
15185         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
15186         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
15187         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
15188         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
15189         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
15190         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
15191
15192 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
15193
15194         * class.c (mono_class_create_generic): Set type_token as well.
15195
15196         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
15197         compatible with MS.
15198
15199 2006-02-02  Martin Baulig  <martin@ximian.com>
15200
15201         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
15202         has never been used so far.
15203
15204 2006-02-02  Martin Baulig  <martin@ximian.com>
15205
15206         * mono-debug-debugger.h: Changed comment at the top of this file;
15207         the header is not installed, but it's safe to #include it from
15208         within the JIT.
15209
15210         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
15211         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
15212
15213 2006-02-02  Martin Baulig  <martin@ximian.com>
15214
15215         * mono-debug.h
15216         (MonoSymbolTable): Removed the `metadata_info' field.
15217
15218         * mono-debug.c
15219         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
15220
15221         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
15222         (mono_debugger_add_builtin_types): Removed.
15223         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
15224         (mono_debugger_create_notification_function): We now operate on a
15225         pre-allocated area; take a `gpointer' and return `void'.
15226
15227         * mono-debug-debugger.c
15228         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
15229         (mono_debugger_add_builtin_types): Removed.
15230
15231 2006-02-02  Martin Baulig  <martin@ximian.com>
15232
15233         * threads.c (mono_debugger_create_all_threads): New public method.
15234
15235 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
15236
15237         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
15238         breaks on several platforms.
15239
15240 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
15241
15242         * assembly.c: the VS.NET build doesn't supply default values for
15243         MONO_ASSEMBLIES and MONO_CFG_DIR.
15244
15245 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15246
15247         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
15248         helper function.
15249
15250         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
15251
15252         * loader.c (method_from_memberref): Fix a warning.
15253
15254         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
15255
15256         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
15257         with explicit layout. Fixes #77433.
15258
15259 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
15262         max_interface_id is initialized before using it. Fixes #77398.
15263         (ves_icall_Type_GetInterfaces): Ditto.
15264
15265 2006-01-30  Raja R Harinath  <rharinath@novell.com>
15266
15267         * metadata.c (mono_metadata_parse_method_signature_full): Don't
15268         allocate memory for parameter attributes when parsing memberref
15269         signatures.
15270         * loader.c (mono_loader_set_error_method_load): Don't warn.
15271         (method_from_memberref): Ensure MissingMethodException gets thrown
15272         if method is not found.  Make warning more informative.
15273
15274 2006-01-29  Raja R Harinath  <harinath@gmail.com>
15275
15276         Fix #77397
15277         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
15278         return true if is byref.
15279         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
15280         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
15281         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
15282
15283 2006-01-27  Raja R Harinath  <rharinath@novell.com>
15284
15285         Fix tests/find-method.2.il
15286         * loader.c (find_method, find_method_in_class): Remove is_inflated
15287         argument.  Revert 2006-01-18 change.
15288         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
15289         is generic, search for method in its generic definition.
15290         * class.c (mono_class_setup_vtable_general): Print generic
15291         arguments of generic types in debugging printf.
15292
15293 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15294
15295         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
15296
15297         * threads.c (mono_threads_request_thread_dump): New helper function.
15298
15299 2006-01-25  Raja R Harinath  <rharinath@novell.com>
15300
15301         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
15302
15303 2006-01-25  Ankit Jain  <jankit@novell.com>
15304
15305         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
15306         move definition to ..
15307         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
15308         
15309 2006-01-25  Ankit Jain  <jankit@novell.com>
15310             Raja R Harinath  <rharinath@novell.com>
15311
15312         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
15313         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
15314         as necessary.
15315
15316 2006-01-25  Martin Baulig  <martin@ximian.com>
15317
15318         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
15319         `MonoDebuggerThread' into debug-debugger.c.
15320
15321 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15322
15323         * profiler.c: fix printing of data.
15324
15325 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
15326
15327         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
15328           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
15329
15330 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15331
15332         * object.c: fix deadlock related to string interning.
15333
15334 2006-01-23  Martin Baulig  <martin@ximian.com>
15335
15336         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
15337
15338         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
15339
15340 2006-01-23  Martin Baulig  <martin@ximian.com>
15341
15342         * mono-debug.h: Moved the prototypes of some functions which are
15343         used by the JIT here from mono-debug-debugger.h.
15344
15345 2006-01-21  Martin Baulig  <martin@ximian.com>
15346
15347         * Makefile.am: Don't install mono-debug-debugger.h.
15348
15349 2006-01-21  Martin Baulig  <martin@ximian.com>
15350
15351         * mono-debug-debugger.h: Enforce the private status of this header
15352         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
15353         Moved some stuff from mono-debugger-jit-wrapper.h here.
15354
15355 2006-01-20  Raja R Harinath  <rharinath@novell.com>
15356
15357         * class.c (mono_class_from_typeref): Add a sanity test to help
15358         catch lack of assembly load/search hooks.
15359
15360 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
15361
15362         * marshal.c (emit_struct_conv): Relax the fields with same offset
15363         check even more. Fixes #77230.
15364
15365 2006-01-18  Martin Baulig  <martin@ximian.com>
15366
15367         * loader.c (find_method_in_class): Added `gboolean is_inflated'
15368         argument; if false, we compare the uninstantiated signatures.
15369         (method_from_memberref): Compare the uninstantiated signatures;
15370         fixes #76417.
15371
15372 2006-01-18  Robert Jordan  <robertj@gmx.net>
15373
15374         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
15375         Clear the weak link. Fixes bug #77170.
15376
15377         * gc.c (mono_gchandle_free):
15378         Reflect *-gc.c changes (tiny optimization).
15379
15380 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
15381
15382         * metadata.c (mono_metadata_signature_dup): Applied patch from
15383         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
15384         Fixes #77288.
15385
15386 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15387
15388         * marshal.c (emit_struct_conv): Allow fields with the same offset when
15389         marshalling from native to managed code. Fixes #77230.
15390
15391 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15392
15393         * threadpool.c: fix problem (Mac only) when more than one asynchronous
15394         connect. Fixes bug #77020.
15395
15396 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15397
15398         * class.c: fixed id assignement for nested interfaces (bug #77275).
15399         Added also better info for --print-vtable debugging.
15400
15401 2006-01-12  Martin Baulig  <martin@ximian.com>
15402
15403         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
15404         interfaces on-the-fly; fixes #76625.
15405
15406         * class-internals.h
15407         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
15408         don't need that anymore.
15409
15410 2006-01-12  Miguel de Icaza  <miguel@novell.com>
15411
15412         * socket-io.c
15413         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
15414         To avoid initing the nested_classes when not needed I turned the
15415         PeerCredData as a toplevel internal class, as it has to be shared
15416         anyways. 
15417
15418         Fixes the CASA issue.
15419
15420 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15421
15422         * domain.c: Accessors for MonoJitInfo
15423
15424         * profiler-private.h: Add jitinfo to the end jit hook
15425
15426         * profiler.[ch]: Define new hooks, called after jitting which give
15427         the MonoJitInfo that was compiled
15428
15429 2006-01-10  Martin Baulig  <martin@ximian.com>
15430
15431         * class.c (mono_class_setup_events): Add support for generic
15432         classes; fixes #76440.
15433
15434 2006-01-06  Raja R Harinath  <rharinath@novell.com>
15435
15436         Fix #77160.
15437         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
15438         on passed-in method.
15439
15440 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15441
15442         * object.c (mono_runtime_invoke_array): Add Nullable support.
15443
15444         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
15445
15446 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
15447
15448         * file-io.c: Don't consider sockets as directory and avoid an endless
15449         loop. Fix bug #76966.
15450
15451 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15452
15453         * object.c (mono_nullable_init): New helper function.
15454         (mono_nullable_box): Ditto.
15455
15456         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
15457
15458         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
15459
15460         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
15461         
15462 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
15463
15464         * class.c (mono_class_is_assignable_from): Make T assignable to 
15465         Nullable<T>.
15466
15467 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
15468
15469         * appdomain.c: Bump corlib version to 46.
15470         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
15471         serialization purpose) and changed ves_icall_System_Reflection_
15472         Assembly_get_code_base signature to accept a boolean (to escape, or 
15473         not, the assembly code base).
15474
15475 2005-12-23  Dick Porter  <dick@ximian.com>
15476
15477         * icall.c: 
15478         * threads-types.h: 
15479         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
15480         CreateEvent icall now returns "created" boolean parameter.
15481
15482 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15483
15484         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
15485         #76967.
15486
15487         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
15488         when attr_klass is an interface. Fixes #77045.
15489
15490 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
15491
15492         * marshal.c (emit_struct_conv): Fix previous patch.
15493         
15494         * marshal.c (emit_struct_conv): Add a check for fields with the same
15495         offset.
15496
15497 2005-12-20  Raja R Harinath  <rharinath@novell.com>
15498
15499         Fix regression in Mono.C5.
15500         * class.c (mono_class_create_generic): If 'klass' is an interface
15501         set up the interface offsets.
15502         (mono_class_is_assignable_from): Don't throw away generic arguments.
15503
15504 2005-12-19  Raja R Harinath  <rharinath@novell.com>
15505
15506         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
15507         type parameters.
15508
15509 2005-12-15  Raja R Harinath  <rharinath@novell.com>
15510
15511         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
15512         dead store.
15513         (do_mono_metadata_parse_generic_class): Don't pass the current
15514         generic context when parsing the type being instantiated: it
15515         cannot use it, anyway.
15516
15517         * loader.c (method_from_memberref): Don't inflate a signature if
15518         it doesn't contain any type parameters.
15519
15520 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15521
15522         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
15523
15524 2005-12-14  Martin Baulig  <martin@ximian.com>
15525
15526         * class.c
15527         (mono_type_get_name_recurse): Don't return null for type
15528         parameters and open generic classes.
15529         (mono_class_setup_methods): Don't exclude generic instances.
15530         (mono_get_unique_iid): Use different IDs for different
15531         instantiations of the same generic type.
15532         (mono_class_setup_vtable): Only use setup_generic_vtable() for
15533         open generic instances; create a normal vtable for closed generic
15534         instances.
15535         (mono_class_setup_vtable_general): We're now also called for
15536         closed generic instances.
15537
15538         * reflection.c
15539         (mono_reflection_bind_generic_parameters): Correctly use
15540         mono_metadata_lookup_generic_inst() everywhere.
15541
15542 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
15543
15544         * object.c (mono_class_create_runtime_vtable): Call 
15545         mono_class_setup_vtable ().
15546
15547         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
15548         function.
15549         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
15550         #76959.
15551
15552         * loader.c (mono_loader_set_error_type_load): Print the type load
15553         warnings to the console so they are more visible to the user.
15554         (mono_loader_set_error_method_load): Ditto.
15555
15556         * reflection.c (ensure_runtime_vtable): Revert the last change as it
15557         is still broken.
15558         
15559         * reflection.c (ensure_runtime_vtable): Fix build.
15560
15561         * reflection.c (ensure_runtime_vtable): Disable an optimization which
15562         doesn't work in all cases.
15563
15564 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
15565
15566         * object.c (mono_array_new_full): Treat a single dimensional array
15567         with 0 lower bounds as an szarray. Fixes #76973.
15568
15569         * reflection.c (custom_attr_visible): Really fix this.
15570
15571 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
15572
15573         * reflection.c (custom_attr_visible): Allow nested public attributes
15574         as well.
15575
15576         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
15577         interface check.
15578
15579 2005-12-12  Raja R Harinath  <harinath@gmail.com>
15580
15581         * class.c (set_generic_param_owner): Delete.
15582         (mono_class_create_from_typedef): Don't set ->owner field of
15583         generic parameters to "param containers" of enclosing classes.
15584         * reflection.c (mono_reflection_initialize_generic_parameter):
15585         Likewise.
15586
15587 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * reflection.c (custom_attr_visible): Fix build.
15590
15591 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
15594         private attributes.
15595         
15596         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
15597         handling of null parameter defaults.
15598
15599 2005-12-09  Raja R Harinath  <rharinath@novell.com>
15600
15601         * class.c (mono_class_from_generic_parameter): Don't set
15602         klass->generic_container.
15603         (my_mono_class_from_generic_parameter): Likewise.
15604
15605 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15606
15607         * reflection.c (load_public_key): Fix a warning.
15608         (method_encode_code): Fix unaligned accesses.
15609
15610 2005-12-07  Martin Baulig  <martin@ximian.com>
15611
15612         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
15613
15614         * reflection.c
15615         (write_generic_param_entry): Encode our custom attrs.
15616
15617         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
15618
15619 2005-12-07  Martin Baulig  <martin@ximian.com>
15620
15621         * reflection.c (encode_new_constraint): Removed; we don't use the
15622         `NewConstraintAttribute' anymore.
15623
15624 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15625
15626         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
15627         not fire a TypeResolve event when Assembly.GetType () is called.
15628
15629 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15630
15631         Beginning of support for nullable types in the runtime. Parts of
15632         this patch are from Martin.
15633
15634         * appdomain.c (MONO_CORLIB_VERSION): Bump
15635
15636         * domain.c (mono_init_internal): get the nullable type
15637
15638         * class.c (mono_class_is_nullable): New method
15639         (mono_class_get_nullable_param): New mehod
15640         (mono_class_create_generic): In types T? set cast_class to T
15641
15642         * class-internals.h (MonoDefaults): new nullable default class
15643         (mono_class_get_nullable_param, mono_class_get_nullable_param):
15644         new methods.
15645
15646 2005-12-05  Raja R Harinath  <rharinath@novell.com>
15647
15648         * metadata.c (select_container): New.  Refactor code to select the
15649         appropriate GenericContainer given the type of generic parameter
15650         we are looking for.
15651         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
15652         not a MonoGenericContext.  Use select_container.  Update parameters.
15653         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
15654         and MONO_TYPE_MVAR.
15655         (unwrap_arrays): Remove duplicate tests.
15656         (find_generic_param): Rename from 'has_same_context'.  Now walks a
15657         generic instantiated class to find any arguments that are generic
15658         parameters.
15659         (mono_type_create_from_typespec_full): Use find_generic_param to
15660         avoid evicting some generic instantiations from the typespec
15661         cache.
15662
15663 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
15664
15665         * reflection.c: fixed writing of doubles on ARM FPA.
15666
15667 2005-12-02  Robert Jordan  <robertj@gmx.net>
15668
15669         * icall.c: Fixed EventInfo.ReflectedType (#76829).
15670
15671 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15672
15673         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
15674         least on SUSE 10 they are not the same (on debian, they are just the
15675         same thing).
15676
15677 2005-12-01  Raja R Harinath  <rharinath@novell.com>
15678
15679         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
15680         DeclaringType for VARs and MVARs.
15681         * class.c (set_generic_param_owner): Fix initialization of owner
15682         fields.
15683
15684 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
15685
15686         * icall.c: fixed Enum.ToObject() to correctly convert the values.
15687
15688 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15689
15690         * threadpool.c: workaround for a bug that shows up on the Mac:
15691         select()+connect() on a blocking socket is not like it should
15692         be, so we proceed to connect() in that case, wasting the I/O
15693         threadpool thread until connect succeedes. Fixes bug #75436.
15694
15695 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15696
15697         * threadpool.c: fix typo when setting file descriptor states.
15698
15699 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15700
15701         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
15702         * metadata.c (mono_metadata_parse_method_signature_full): Don't
15703         create a temporary signature container.
15704         (mono_metadata_parse_generic_param): Update to changes.
15705         (mono_type_create_from_typespec_full): Update to changes.
15706         * loader.c (method_from_memberref): Don't use a
15707         MonoGenericContainer while parsing a memberref signature.
15708         (method_from_methodspec): Remove dead-store of the 'container'
15709         variable.  It's overwritten before use.
15710
15711         * metadata.c (mono_type_create_from_typespec_full): Make debugging
15712         checks tighter.
15713         (mono_metadata_parse_generic_param): Likewise.
15714         * loader.c (find_method_in_class): Does not need a
15715         MonoGenericContainer.  Use 'mono_method_signature' rather than
15716         'mono_method_signature_full'.
15717         (find_method, mono_get_method_constrained, method_from_memberref):
15718         Update to changes.
15719
15720         * metadata.c (mono_type_create_from_typespec_full): Ensure that
15721         owner-less generic-parameters are never evicted from the typespec
15722         cache.
15723
15724         * loader.c (method_from_memberref): Don't use the current context
15725         when parsing signatures.
15726         (method_from_methodspec, mono_get_method_from_token): Update to changes.
15727
15728         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
15729         side-effects in g_assert.
15730         * loader.c (mono_get_method_from_token): Resolve klass earlier so
15731         that we don't potentially lose information.
15732
15733 2005-11-26  Dick Porter  <dick@ximian.com>
15734
15735         * icall.c:
15736         * threads.c: icalls to implement basic (ie, not named)
15737         System.Threading.Semaphore.
15738
15739 2005-11-24  Dick Porter  <dick@ximian.com>
15740
15741         * process.c
15742         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
15743         Use GetProcessId() if it's available.
15744
15745 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
15746
15747         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
15748
15749 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15750             Ankit Jain  <jankit@novell.com>
15751
15752         * loader.c (mono_get_method_from_token): Initialize 'method' field
15753         of all generic parameters before parsing the signature.  Remove
15754         code that "fixed"-up MVAR references.
15755
15756 2005-11-23  Ankit Jain  <jankit@novell.com>
15757
15758         * metadata.c (mono_metadata_has_generic_params):
15759         (mono_metadata_load_generic_param_constraints):
15760         (mono_metadata_load_generic_params): Move duplicate code ...
15761         (mono_metadata_get_generic_param_row): ... here. Returns the
15762         first row-id in GenericParam table for a given owner (token).
15763         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
15764         prototype.
15765
15766 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15767             Ankit Jain  <jankit@novell.com>
15768
15769         * metadata.c (mono_metadata_class_equal): Pass signature_only when
15770         comparing VARs too.
15771         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
15772         type->data.generic_param only if the type is an MVAR.
15773         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
15774         leak owner-less VARs and MVARs into managed space.
15775
15776 2005-11-21  Martin Baulig  <martin@ximian.com>
15777
15778         * class-internals.h
15779         (MonoMethod): Moved the `generic_container' here from
15780         `MonoMethodNormal' since we now also need it for
15781         `MonoMethodPInvoke';
15782         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
15783         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
15784         an union containing both `MonoMethodNormal' and
15785         `MonoMethodPInvoke'.
15786
15787         * loader.c
15788         (mono_get_method_from_token): Allow implementing generic methods
15789         as interncalls.
15790
15791         * threads.c
15792         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
15793         icall.
15794
15795 2005-11-17  Dick Porter  <dick@ximian.com>
15796
15797         * icall.c: 
15798         * process.h: 
15799         * process.c: Split the Process Start_internal icall into
15800         ShellExecuteEx_internal and CreateProcess_internal, which are
15801         called depending on whether UseShellExecute is true.  Fixes bug
15802         76670.
15803
15804         * appdomain.c (MONO_CORLIB_VERSION): Incremented
15805
15806 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
15809         'msize' parameters, use the information in 'mspec' instead.
15810         (emit_object_to_ptr_conv): Ditto.
15811
15812         * marshal.c (emit_struct_conv): Handle explicit layout structs with
15813         fields out of order. Fixes #76733.
15814
15815 2005-11-17  Ankit Jain  <jankit@novell.com>
15816
15817         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
15818
15819 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
15820
15821         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
15822           bug #76575.
15823
15824 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15825
15826         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
15827         for types with non-auto layout. Fixes #76717.
15828
15829 2005-11-16  Ankit Jain  <jankit@novell.com>
15830
15831         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
15832         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
15833         if generic_context is null.
15834           (mono_metadata_generic_param_equal): param->owner can be null.
15835           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
15836         null.
15837
15838 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15839
15840         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
15841         the correct value.
15842
15843 2005-11-15  Martin Baulig  <martin@ximian.com>
15844
15845         * object.c (set_value): Use mono_class_from_mono_type() instead of
15846         the hack for generic instances; fixes #76136.
15847
15848 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
15849
15850         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
15851         fields.
15852
15853         * image.c (load_metadata_ptrs): Initialize the new fields.
15854
15855         * reflection.c (create_dynamic_mono_image): Ditto.
15856
15857         * reflection.c (build_compressed_metadata): Use the new fields.
15858
15859         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
15860         icall.
15861
15862         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
15863         icall.
15864         
15865 2005-11-15  Ankit Jain  <jankit@novell.com>
15866             Raja R Harinath  <harinath@gmail.com>
15867
15868         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
15869         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
15870         new per-generic_container cache if the cached MonoType's context matches
15871         the current context.
15872           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
15873         to the expected context.
15874           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
15875
15876 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15877
15878         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
15879         we changed the signature of an icall.
15880         * icall.c: Modify to mono_double_ParseImpl return true/false 
15881         depending on the success, instead of throwing the exception. This will
15882         help us in Double.TryParse methods.
15883         
15884 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
15885
15886         * marshal.c (emit_marshal_object): Throw an exception when
15887         marshalling 'object' instead of crashing. Fixes #76696.
15888
15889 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15890
15891         * class-internals.h: Add prototype for mono_type_get_full_name ().
15892
15893 2005-11-11  Dick Porter  <dick@ximian.com>
15894
15895         * threads.c (mono_thread_manage): Make sure the main thread has
15896         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15897
15898 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15899
15900         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15901         console about the missing type.
15902         (mono_loader_set_error_method_load): Ditto.
15903
15904 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15905
15906         * mono-config.c (mono_get_config_dir): Set the system defaults if
15907         none is specified.
15908
15909         * assembly.c (mono_set_dirs): New API entry point to set the
15910         assembly and the config directory in one call
15911
15912 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15913
15914         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15915         the ftnptr was created from a delegate in a domain other than the
15916         current domain. Fixes #75377.
15917
15918         * exception.h exception.c: Add mono_get_exception_not_supported ().
15919
15920 2005-11-08  Martin Baulig  <martin@ximian.com>
15921
15922         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15923
15924 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15925
15926         * security-manager.h: Added definitions to deal with strongname key 
15927         pairs bigger (and smaller) than 1024 bits.
15928         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15929         adjust wrt the public key length being used.
15930
15931 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15932
15933         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15934           Windows build (r51396-51397).
15935
15936 2005-11-03  Martin Baulig  <martin@ximian.com>
15937
15938         * class.c (mono_class_setup_vtable_general): Also add generic
15939         methods to the vtable; fixes #76581.
15940
15941 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15942
15943         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15944         sure that we lookup GetString method from the System.Text.Encoding
15945         class, not the derived class or we get an empty method.
15946
15947         Fixed class #76612.
15948
15949 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15950
15951         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15952         if it has been previously set (embedders). 
15953
15954         Make mono_set_rootdir available also on Unix.
15955
15956 005-10-24  Robert Jordan  <robertj@gmx.net>
15957
15958         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15959
15960 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15961
15962         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15963         only calls which are made to native code use this flag.
15964
15965         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15966
15967 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15968
15969         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15970         Add support for FieldBuilders.
15971
15972 2005-10-29  Martin Baulig  <martin@ximian.com>
15973
15974         * mono-debug.c
15975         (mono_debug_using_mono_debugger): New public method; returns
15976         whether we're running inside the debugger.
15977
15978 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15979
15980         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15981         for Method/Constructor/FieldBuilders.
15982
15983 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15984
15985         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15986         and fields as well.
15987
15988 2005-10-26  Martin Baulig  <martin@ximian.com>
15989
15990         * mono-debug-debugger.c
15991         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15992
15993 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15994
15995         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15996         integer to isspace.
15997
15998 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15999
16000         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
16001         when passing valuetypes byref. Fixes #76502.
16002
16003 2005-10-19  Jackson Harper  <jackson@ximian.com>
16004
16005         * profiler.c: Don't put a . in front of types that are not in a
16006         namespace.
16007
16008 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16009
16010         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
16011
16012 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
16013
16014         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
16015         #76436.
16016         (mono_marshal_get_ldflda_wrapper): Fix a warning.
16017
16018 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16019
16020         * assembly.c metadata-internals.h icall.c: Define an additional
16021         parameter for mono_assembly_name_parse_full, so we can avoid creating
16022         S.R.AssemblyName.Version when no version info wasn't passed.
16023         
16024 2005-10-09  Miguel de Icaza  <miguel@novell.com>
16025
16026         * class.c (mono_type_get_full_name): Reimplement method that was
16027         removed. 
16028
16029         * image.c: Some docs
16030
16031 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16032
16033         * profiler.c (output_newobj_profile): Fix printing of Total memory
16034         on x86.
16035
16036 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
16039
16040 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
16041
16042         * threads.c: remove debug output.
16043
16044 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16045
16046         * threads.c (mono_thread_manage): Fix crashes if more than 64
16047         threads need to be aborted. Hopefully fixes #75899.
16048
16049         * assembly.c (mono_stringify_assembly_name): New helper function.
16050
16051         * class.c: Use mono_stringify_assembly_name instead of the similar
16052         static function.
16053
16054         * assembly.h assembly.c: Add support for calling a postload search 
16055         hook if an assembly cannot be loaded.
16056
16057         * appdomain.c: Register new search hooks which call the AssemblyResolve
16058         events in AppDomain. Fixes #75231
16059
16060 2005-10-07  Martin Baulig  <martin@ximian.com>
16061
16062         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
16063         methods without debug info.
16064
16065 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16066
16067         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
16068         wrappers.
16069
16070 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16071
16072         * file-io.c: now that we return symlinks, use lstat and, when the file
16073         is a symbolic link, stat, to get the file attributes. Also avoid the
16074         conversion to/from utf16/external.
16075
16076 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
16077
16078         * class.c (mono_class_layout_fields): Compute klass->has_references
16079         correctly if an embedded valuetype is not yet initialized. Fixes
16080         #76331.
16081
16082 2005-10-04  Martin Baulig  <martin@ximian.com>
16083
16084         * metadata.c
16085         (mono_metadata_load_generic_param_constraints): New public
16086         function; splitted the constraints loading out from
16087         mono_metadata_load_generic_params().
16088
16089         * class.c (mono_class_create_from_typedef): Call
16090         mono_metadata_load_generic_param_constraints() after setting up
16091         the type and creating our parent; fixes #75329.
16092
16093 2005-10-04  Martin Baulig  <martin@ximian.com>
16094
16095         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
16096         non-dynamic parent classes.
16097
16098 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
16099
16100         * file-io.c : win32 build fix (ETXTBSY seems not found).
16101
16102 2005-10-04  Martin Baulig  <martin@ximian.com>
16103
16104         * reflection.c
16105         (mono_image_get_methodspec_token): Make the cache actually work;
16106         fixes #75974.
16107
16108 2005-10-04  Martin Baulig  <martin@ximian.com>
16109
16110         * class.c (mono_class_name_from_token): Removed the unneccessary
16111         `MonoGenericContext *' argument.
16112
16113 2005-10-04  Martin Baulig  <martin@ximian.com>
16114
16115         * loader.c
16116         (method_from_methodspec): Make the caching work again; fixes the
16117         performance regression from #76262.
16118
16119 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16120
16121         * file-io.c:
16122         * file-io.h:
16123         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
16124         GetFileSystemEntries that performs the same work but without going
16125         into io-layer, locking, etc.
16126
16127 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16128
16129         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
16130         ThreadState_Stopped as well. Fixes #76047.
16131
16132 2005-09-29  Martin Baulig  <martin@ximian.com>
16133
16134         * class.c
16135         (inflate_generic_context): If the new context has a `gmethod', set
16136         its `container' that that gmethod's `container'.
16137
16138         * metadata.c
16139         (mono_metadata_parse_generic_param): Simplify things;
16140         `generic_container = generic_context->container;' is just fine.
16141
16142         * loader.c (method_from_methodspec): Code cleanups.
16143
16144 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16145
16146         * decimal.c: fix warning (and let gcc generate correct
16147         code on ARM with optimizations).
16148
16149 2005-09-28  Martin Baulig  <martin@ximian.com>
16150
16151         * loader.c
16152         (method_from_memberref): Added `MonoGenericContext *class_context'
16153         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
16154         (method_from_methodspec): If we're a memberref, use the enclosing
16155         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
16156
16157 2005-09-28  Martin Baulig  <martin@ximian.com>
16158
16159         * object.c (mono_runtime_invoke_array): Added support for
16160         MONO_TYPE_GENERICINST; fixes #75917.
16161
16162 2005-09-27  Martin Baulig  <martin@ximian.com>
16163
16164         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
16165         `k->byval_arg.type' to determine the actual type.
16166
16167         * loader.c (method_from_methodspec): Removed some hacks.
16168
16169 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16170
16171         * class-internals.h (mono_field_is_deleted): Do the test for
16172         rtspecialname before we check the actual name of the field. This
16173         prevents us from dereferencing a pointer into the string table,
16174         saving us from accessing a few pages
16175
16176         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16177         macros. This will allow a deadlock debugger to easily be plugged
16178         in.
16179
16180 2005-09-27  Martin Baulig  <martin@ximian.com>
16181
16182         * loader.c (method_from_methodspec): Create a "signature"
16183         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
16184
16185 2005-09-27  Martin Baulig  <martin@ximian.com>
16186
16187         * class.c
16188         (inflate_generic_class): Correctly set the new context's
16189         container.
16190
16191         * loader.c
16192         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
16193         instead of a `MonoGenericContext *'.
16194         (mono_method_signature_full): Take a `MonoGenericContainer *'
16195         instead of a `MonoGenericContext *'.
16196
16197         * metadata.c
16198         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
16199         instead of a `MonoGenericContext *'.
16200         (mono_metadata_parse_method_signature_full): Likewise.
16201
16202 2005-09-26  Martin Baulig  <martin@ximian.com>
16203
16204         * class.c
16205         (mono_class_from_generic_parameter): Set `klass->generic_container'
16206         (mono_class_from_generic_parameter): Likewise.
16207         (mono_bounded_array_class_get): We inherit the generic container
16208         from the element class.
16209
16210         * loader.c
16211         (find_method, find_method_in_class): Take a `MonoGenericContext *'
16212         argument rather than computing it here.
16213         (method_from_memberref): Correctly set the generic context before
16214         parsing the signature.  Fixes #75681.
16215
16216 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16217
16218         * object.c (mono_class_has_special_static_fields): Fix warnings.
16219
16220 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16221
16222         * assembly.c: Add parse_public_key function, to
16223         par the public keys. Also added mono_assembly_name_parse_full,
16224         to define it the parsed key should be freed or not.
16225         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
16226         to parse a long format assembly name.
16227         * metadata-internals.h: Keep mono_assembly_name_parse_full as
16228         private, since calling it to preserve the key requires
16229         freeing it manually.
16230         
16231 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
16232
16233         * locales.c : removed HAVE_ICU part.
16234
16235 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16236
16237         * object.c (mono_class_create_runtime_vtable): Avoid calling 
16238         field_is_special_static if the klass has no special static fields.
16239
16240         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
16241         (MonoCachedClassInfo): Likewise.
16242
16243         * object.c (mono_class_has_special_static_fields): New helper function.
16244
16245 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16246
16247         * class.c (mono_class_create_from_typedef): Don't call 
16248         interfaces_from_typedef_full for enums.
16249         (mono_class_create_from_typedef): Compute the base types of enums directly
16250         without calling mono_class_setup_fields ().
16251         (mono_class_find_enum_basetype): New helper function.
16252
16253         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
16254         one place inside the string heap.
16255         
16256 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
16257
16258         * class.c: locking fixes, code cleanups, some docs added.
16259         Allocate some data structures in the image mempool.
16260
16261 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16262
16263         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
16264         the example code.
16265         
16266 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
16267
16268         * class-internals.h, class.c, reflection.c: reduce memory taken by
16269         MonoClass.
16270
16271 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
16272
16273         * metadata.c, metadata.h, loader.h: documentation updates, code and
16274         API cleanups.
16275
16276 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16277
16278         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
16279         the example code.
16280
16281         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
16282         page faults caused by the runtime while reading metadata.
16283
16284 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16285
16286         * socket-io.c: the field names were changed 3 months ago and no one
16287         realized until bug #76077 got filed!
16288
16289 2005-09-20  Martin Baulig  <martin@ximian.com>
16290
16291         * icall.c (assembly_icalls): Removed some unused debugger icalls.
16292
16293 2005-09-20  Martin Baulig  <martin@ximian.com>
16294
16295         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
16296         write the rank into the class entry.
16297
16298 2005-09-20  Martin Baulig  <martin@ximian.com>
16299
16300         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
16301
16302 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
16303
16304         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16305
16306         * icall.c (custom_attrs_defined_internal): New icall.
16307
16308         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
16309         function.
16310         (mono_custom_attrs_construct_by_type): New helper function.
16311
16312 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
16313
16314         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
16315         terminate the resulting string. Fixes #76123.
16316
16317 2005-09-16  Martin Baulig  <martin@ximian.com>
16318
16319         * mono-debug.c
16320         (mono_debug_add_method): Ignore inflated methods for the moment.
16321
16322 2005-09-14  Martin Baulig  <martin@ximian.com>
16323
16324         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
16325
16326 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
16327
16328         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
16329         return a success/failure indication.
16330         (mono_metadata_interfaces_from_typedef_full): Ditto.
16331         (get_constraints): Ditto.
16332
16333 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16334
16335         * marshal.c (emit_marshal_array): Fix handling of null arrays.
16336         
16337         * marshal.c (emit_marshal_array): Add support for returning string
16338         arrays from delegates. Fixes #76063.
16339
16340         * marshal.c: Use the emit_ldloc/stloc macros where possible.
16341
16342 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16343
16344         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
16345         icall.
16346
16347 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16348
16349         * reflection.c icall.c: Fix after mono_get_exception_type_load
16350         signature change.
16351
16352         * assembly.c (mono_assembly_get_assemblyref): New helper function.
16353         (mono_assembly_load_reference): Use the new helper.
16354
16355         * class-internals.h (MonoLoaderError): New structure containing 
16356         information about type loading errors.
16357
16358         * class-internals.h loader.c: Add APIs to store per-thread loader
16359         error information.
16360
16361         * loader.c class.c: Set the loader error if needed.
16362
16363         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
16364
16365 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
16366
16367         * decimal.c: fixed to handle the broken ARM fp format.
16368
16369 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
16370
16371         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
16372         broken.
16373
16374 2005-09-06  Martin Baulig  <martin@ximian.com>
16375
16376         * domain.c (supported_runtimes): Added v2.0.50727.
16377
16378 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
16379
16380         * culture-info.h: reduce the size of some structures.
16381
16382 2005-09-05  Martin Baulig  <martin@ximian.com>
16383
16384         Reflect latest API changes in the August CTP.
16385
16386         * icall.c
16387         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
16388         ("MonoType.HasGenericArguments"): Removed.
16389         ("MonoMethod.BindGenericParameters"): Renamed to
16390         "MakeGenericMethod".
16391         ("MethodBuilder.BindGenericParameters"): Renamed to
16392         "MakeGenericMethod".    
16393
16394 2005-09-05  Martin Baulig  <martin@ximian.com>
16395
16396         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
16397
16398 2005-09-05  Martin Baulig  <martin@ximian.com>
16399
16400         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16401
16402         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
16403         generic_container is non-NULL.
16404
16405 2005-09-05  Martin Baulig  <martin@ximian.com>
16406
16407         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16408
16409         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
16410
16411 2005-08-29  Michal Moskal  <malekith@nemerle.org>
16412
16413         * reflection.c (encode_locals,
16414         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
16415         for large generic types.
16416
16417 2005-09-05  Martin Baulig  <martin@ximian.com>
16418
16419         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16420
16421         * class.c (mono_dup_array_type): New public method.
16422         (mono_metadata_signature_deep_dup): New public method.
16423         (dup_type): Correctly duplicate array and function types.
16424
16425 2005-09-05  Martin Baulig  <martin@ximian.com>
16426
16427         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16428
16429         * reflection.c (get_default_param_value_blobs): Handle generic types
16430         and generic methods.
16431
16432 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
16433
16434         * class.c: Fixed error reporting (method/class were inversed) for 
16435         inheritance demands.
16436         * security-manager.c|h: Added the AppDomain when calling the managed
16437         System.Security.SecurityManager.InheritanceDemand method.
16438
16439 2005-09-01  Raja R Harinath  <rharinath@novell.com>
16440
16441         * reflection.c (encode_marshal_blob): 'marshaltype' and
16442         'marshaltyperef' are alternate sources for the custom marshaler
16443         name.
16444
16445 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
16446
16447         * class.c: fix creation of array classes with rank == 1
16448         (patch by Ankit Jain <jankit@novell.com>).
16449
16450 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
16451
16452         * object.c: fix check for creating the bound data for arrays vs
16453         szarrays.
16454
16455 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16456
16457         * object.c: configuration file name is now based on the executable name,
16458         not the image name. Fixes bug #75931.
16459
16460 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16461
16462         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
16463         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
16464
16465 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16466
16467         * rand.c: Use wincrypt.h instead of WinCrypt.h.
16468
16469 2005-08-24  Ankit Jain  <jankit@novell.com>
16470             Raja R Harinath  <rharinath@novell.com>
16471
16472         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
16473           called by it recursively.
16474           (mono_class_init): Remove special case in pending_init handling, since it's
16475           superseded by the fix to mono_class_from_typeref.
16476
16477 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16478
16479         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
16480         BROKEN_THREAD_START stuff.
16481
16482 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16483
16484         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
16485         trampoline.
16486
16487         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
16488         
16489         * object.c (mono_delegate_ctor): Replace the original function address with
16490         a delegate trampoline.
16491
16492 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
16493
16494         * icall.c: add boolean argument to base64_to_byte_array and 
16495         InternalFromBase64String to control whether a whitespace-only string
16496         is allowed (or should casue a FormatException to be thrown). We need
16497         this as the behavior has changed between MS.NET 1.x and 2.0, and we
16498         to match the MS behaviour in both profiles.
16499         * appdomain.c: Bump corlib version.
16500
16501 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16502
16503         This patch implements a big portion of publisher policy
16504         support, used to bind assembly versions and redirect
16505         one assembly from version A to version B.
16506
16507         * assembly.c:
16508         New GSList loaded_assembly_bindings, for storing the cached
16509         assembly bindings.
16510         (assembly_binding_maps_name): New static function for checking if a 
16511         assembly binding information maps an assembly name.
16512         (mono_assembly_binding_info_free): New function for freeing
16513         assembly binding information resources.
16514         (get_publisher_policy_info): New static function for retrieving 
16515         assembly binding information from a MonoImage.
16516         (compare_versions): New static function for comparing an assembly
16517         binding information data and the version of an assembly name.
16518         (check_policy_versions): New static function for checking if an
16519         assembly binding info mapping an assembly name is valid for it.
16520         (mono_assembly_load_publisher_policy): New static function for
16521         loading the 'policy.major.minor.MyAssembly' image for an assembly
16522         with an assembly name 'aname'.
16523         (mono_assembly_bind_version): New static function for updating
16524         assembly redirection.
16525         (mono_assembly_apply_binding): New static function for applying
16526         assembly binding.
16527         (search_binding_loaded): New static function for searching 
16528         loaded assembly binding infos in the cache domain.
16529         (mono_assembly_load_full): Don't apply assembly binding for
16530         reflection only assemblies.
16531
16532         * metadata-internals.h: Add MonoAssemblyBindingInfo,
16533         which contains information about assembly binding. Also
16534         declare signature for mono_config_parse_publisher_policy ()
16535         function, used to retrieve pub policy info.
16536         
16537         * mono-config.c:
16538         (publisher_policy_start): New static function used to parse publisher 
16539         policy config files.
16540         (publisher_policy_parser): New static MonoParseHandler containing 
16541         the functions used when parsing config files.
16542         (mono_config_parse_publisher_policy): New function for parsing
16543         publisher policy files.
16544         
16545 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16546
16547         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
16548
16549         * marshal.c (mono_delegate_free_ftnptr): Ditto.
16550
16551         * object.c (mono_get_addr_from_ftnptr): New helper function.
16552
16553         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
16554
16555         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16556
16557 2005-08-19  Dick Porter  <dick@ximian.com>
16558
16559         * threads.c, threads.h, appdomain.c, appdomain.h,
16560         profiler-private.h, monitor.c, object.c, object-internals.h,
16561         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
16562         store the thread ID, so it can hold a 64 bit value if needed.
16563
16564 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16565
16566         * reflection.c (mono_reflection_create_dynamic_method): Store the
16567         handle class into the method references as well so ldtoken works in
16568         dynamic methods.
16569
16570         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
16571         types.
16572
16573 2005-08-19  Ankit Jain <jankit@novell.com>
16574
16575         Fix #75847.
16576         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
16577           here rather than using the method signature of a arbitrary function
16578           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
16579           two arguments.
16580           Hack done with Harinath.
16581
16582 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16583
16584         * threadpool.c: disable printing stack traces when we get a exception
16585         in a threadpool thread. I need to do more testing to figure out which
16586         cases actually print this. Fixes bug #75828.
16587
16588 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16589
16590         * icall.c: there might be ignored whitespace after the last '='. This
16591         fixes length computation and bug #75840.
16592
16593 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
16594
16595         * assembly.c (mono_assembly_load_full): Consider .exe extension as
16596         well. Fixes #75809.
16597
16598         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
16599         #75784.
16600         
16601         * reflection.c (create_custom_attr_data): Ditto.
16602
16603 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
16604
16605         * locales.c, culture-info.h : removed RegionLCIDMap.
16606         * culture-info-tables.h : regenerated.
16607
16608 2005-08-16  Martin Baulig  <martin@ximian.com>
16609
16610         * class.c (mono_type_get_name_recurse): Small fix.
16611
16612 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
16613
16614         * locales.c : indentation fixie.
16615
16616 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
16617
16618         * object-internals.h,
16619           locales.h,
16620           locales.c,
16621           culture-info.h,
16622           icall.c : added RegionInfo table support.
16623         * culture-info-table.h : regenerated for region support.
16624
16625 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
16626
16627         * reflection.c (resolve_object): handle all kinds of MonoMethod
16628         including generic ones
16629
16630 2005-08-12  Ankit Jain <jankit@novell.com>
16631
16632         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
16633           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
16634
16635 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
16636
16637         * process.c: Don't close a thread handle when it's NULL. This is a
16638         workaround for bug #75733.
16639
16640 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
16643
16644 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
16645
16646         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
16647
16648 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16649
16650         * threadpool.c: if a work item in the thread pool has a callback that
16651         catches a exception, don't propagate it after invoking the callback.
16652         Fixes bug #75336.
16653
16654 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16655
16656         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
16657
16658         * class-internals.h (MonoCachedClassInfo): Add some new fields.
16659
16660         * class.c (mono_class_init): Load field info lazily in the AOT case.    
16661
16662         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
16663
16664 2005-08-03  Ankit Jain  <jankit@novell.com>
16665
16666         Fix #75683.
16667         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
16668           PInvoke calling convention is 0.
16669
16670 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
16671
16672         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
16673         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
16674
16675 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
16676
16677         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
16678         to handle threads not started by the GC (patch by Michael Meeks
16679         <michael.meeks@novell.com>).
16680
16681 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
16682
16683         * reflection.c: Make buffer used in emitting types larger for some
16684         big generic types (patch by Michal Moskal).
16685
16686 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16687
16688         * mono-debug.c: Fix some (not all) alignment problems.
16689
16690 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16691
16692         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
16693         Invoke mono_image_load_from_data_full passing the refonly
16694         parameter.
16695
16696         * assembly.c
16697         (mono_assembly_open_from_bundle): Add the refonly argument, 
16698         in order to pass it to other methods it calls to.
16699         (do_mono_assembly_open): Add the refonly argument, in order 
16700         to pass it to other methods it calls to.
16701         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
16702         the refonly parameter to it.
16703
16704         * image.c: Add loaded_images_refonly_hash and
16705         loaded_images_refonly_guid_hash to cache the reflection
16706         only loaded images.
16707         (mono_images_init): Initialize the hash tables used for
16708         caching the reflection only images.
16709         (load_modules): Invoke mono_image_open_full passing the refonly
16710         parameter to load the modules the correct way.
16711         (build_guid_table): Add the refonly argument, to re-build the 
16712         correct hash table.
16713         (do_mono_image_open): Added the refonly argument, in order to
16714         define it for the loaded image.
16715         (mono_image_loaded_full): New function, which receives an
16716         additional parameter to look for the image in the refonly or
16717         non-refonly section.
16718         (mono_image_loaded): Updated, using mono_image_loaded_full.
16719         (mono_image_loaded_by_guid_full): The same case that happens
16720         with mono_image_loaded_full.
16721         (mono_image_loaded_by_guid): Likewise.
16722         (register_image): Use the ref_only variable inside MonoImage
16723         to decide in which hash table store the current image.
16724         (mono_image_open_from_data_full): Rename
16725         mono_image_open_from_data to mono_image_open_from_data_full,
16726         adding the refonly argument, to define the ref_only variable 
16727         inside MonoImage.
16728         (mono_image_open_from_data): Return 
16729         mono_image_open_from_data_full.
16730         (mono_image_open_full): Rename mono_image_open to
16731         mono_image_open_full, receiving the new refonly argument,
16732         to pass it to inner methods.
16733         (mono_pe_file_open): Update this function, to open
16734         a MonoImage as a non-refonly image.
16735         (mono_image_close): Use the refonly variable inside
16736         MonoImage to remove the image from the correct caches.
16737
16738         * image.h: Add the signatures of mono_image_open_full,
16739         mono_image_open_from_data_full, mono_image_loaded_full,
16740         mono_image_loaded_by_guid_full.
16741
16742         * metadata-internals.h: Add the ref_only field to 
16743         MonoImage.
16744         
16745 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16746
16747         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
16748         Fix the last behavior, which used to load the assemblies and
16749         extract MonoReflectionAssemblyName information, instead of
16750         extract it from the metadata tables. Needed for Reflection
16751         Only assemblies.
16752         
16753 2005-07-29  Martin Baulig  <martin@ximian.com>
16754
16755         * mono-debug-debugger.c
16756         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
16757         not initialized.
16758
16759         * mono-debug.c
16760         (mono_debug_address_from_il_offset): Check whether we have
16761         debugging support before attempting to take the lock.
16762         (mono_debug_source_location_from_address): Likewise.
16763         (mono_debug_source_location_from_il_offset): Likewise.
16764         (mono_debug_il_offset_from_address): Likewise.
16765         (mono_debug_address_from_il_offset): Likewise.
16766
16767 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
16768
16769         * class.c (mono_class_from_name_case): Add support for dynamic images.
16770         Fixes #75650.
16771
16772         * object.c (mono_class_compute_gc_descriptor): Add a workaround
16773         for #75479.
16774
16775 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16776         
16777         * reflection.c (mono_method_get_object): Fix warning.
16778
16779 2005-07-28  Martin Baulig  <martin@ximian.com>
16780
16781         * mono-debug.c
16782         (mono_debug_add_wrapper): Also write the wrapper type.
16783
16784 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16785
16786         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
16787         
16788         * class.c (mono_class_init): Avoid reading nested classes if the AOT
16789         data indicates the class has none.
16790
16791 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
16792
16793         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
16794         loader lock with the debugger lock. Prevents deadlocks for beagle.
16795
16796         Beagle can now run on an smp box for a weekend without any
16797         issues. Woohoo!
16798
16799 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
16800
16801         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
16802         in a module. Fixes #75629.
16803
16804 2005-07-26  Martin Baulig  <martin@ximian.com>
16805
16806         * mono-debug.c (mono_debug_add_wrapper): New static method.
16807         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
16808         interncall or a wrapper.
16809
16810         * mono-debug.h (MonoDebugWrapperData): New public typedef.
16811         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
16812         (MONO_DEBUGGER_VERSION): Bump to 51.
16813
16814         * mono-debug-debugger.c
16815         (mono_debugger_add_type): Removed this empty function.
16816         (mono_debugger_add_method): Likewise.
16817
16818 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16819
16820         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
16821         before accessing method->slot.
16822
16823 2005-07-21  Jb Evain  <jbevain@gmail.com>
16824
16825         * reflection.c (method_encode_clauses/class): Handle filters clauses.
16826         Fixes #75010.
16827
16828 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
16831         #75587.
16832
16833 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16834
16835         * image.h image.c: Add mono_image_get_guid () API function.
16836
16837 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
16838
16839         There were issues when multiple threads tried to load
16840         assemblies. A deadlock was created between assemblies_mutex and
16841         mono_domain_assemblies_lock. This fixes the issue by making the
16842         assembly ref counting be lock free. See bug 75586.
16843         
16844         * image.c (mono_image_close): The add ref function here was using
16845         Interlocked operations while the unref was using a mutex and a
16846         --. I don't think this was ever a bug that would be exposed in a
16847         non-pendantic way (ie, by an embedder doing a ref on one thread
16848         and an unref on another), but for the sake of correctness, this is
16849         now Interlocked.
16850
16851         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
16852         (mono_assembly_load_reference): Call mono_assembly_addref rather
16853         than touching the refcount ourselves.
16854         (mono_assembly_close): Use InterlockedDecrement to unref the
16855         assembly. Don't acquire the lock unless it is actually needed.
16856
16857 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16858
16859         * class.c (mono_class_layout_fields): Fix calculation of has_references
16860         for generic types.
16861
16862 2005-07-12  Martin Baulig  <martin@ximian.com>
16863
16864         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16865
16866         * metadata.c
16867         (mono_type_hash): Provide better hashing for generic instances.
16868         (mono_generic_inst_hash): Improve hashing.
16869         (mono_generic_class_hash): Likewise.
16870
16871         * reflection.c (mymono_metadata_type_hash): Improve hashing for
16872         generic instances.
16873
16874 2005-07-12  Martin Baulig  <martin@ximian.com>
16875
16876         * reflection.c (mono_reflection_create_runtime_class): Remove the
16877         hack for generic type definitions and non-`Run' assemblies.
16878         (mono_reflection_bind_generic_parameters): Also use
16879         `klass->wastypebuilder' to check for TypeBuilders.
16880
16881 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16882
16883         * class.c (mono_class_layout_fields): Fix calculation of has_references
16884         for generic types.
16885
16886         * class.c (inflate_generic_class): Fix a leak.
16887         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
16888         for generic types.
16889
16890 2005-07-11  Martin Baulig  <martin@ximian.com>
16891
16892         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16893         on error.
16894
16895 2005-07-11  Martin Baulig  <martin@ximian.com>
16896
16897         * loader.c (find_method): Also lookup in
16898         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16899
16900 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16901
16902         * appdomain.c (mono_domain_unload): Don't free the error message
16903         before passing it to mono_get_exception_...
16904
16905         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16906         
16907 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16908
16909         * threads.c: try to better guess an available RT signal (bug #75387).
16910
16911 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16912
16913         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16914         and CACHE_OBJECT.
16915
16916 2005-07-07  Martin Baulig  <martin@ximian.com>
16917
16918         * class.c (mono_type_get_name_full): Return NULL for
16919         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16920         fixes #75408.
16921
16922 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16923
16924         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16925         exit the appdomain as well being aborted.
16926
16927         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16928         change back to the root domain after calling managed code. This enables
16929         appdomains using threadpools to be unloaded.
16930
16931 2005-07-07  Martin Baulig  <martin@ximian.com>
16932
16933         * class-internals.h
16934         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16935         into `MonoDynamicGenericClass' since we only need it for dynamic
16936         types.
16937
16938         * reflection.c (mono_class_bind_generic_parameters): We don't need
16939         to compute the `parent' here.
16940
16941 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16942
16943         * culture-info-table.h : regenerated.
16944
16945 2005-07-06  Martin Baulig  <martin@ximian.com>
16946
16947         * icall.c
16948         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16949
16950         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16951
16952 2005-07-06  Martin Baulig  <martin@ximian.com>
16953
16954         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16955         we're doing a signature-only comparision; fixes #74945.
16956
16957 2005-07-06  Martin Baulig  <martin@ximian.com>
16958
16959         * class-internals.h (MonoGenericClass): Moved some things out into
16960         a new `MonoInflatedGenericClass' type.  
16961         (MonoInflatedGenericClass): New type; the `klass' of a
16962         `MonoGenericClass' is now computed lazyly in
16963         mono_get_inflated_generic_class().      
16964
16965         * class.c (mono_get_inflated_generic_class): New public function.
16966         (mono_class_inflate_generic_method): Removed the unused
16967         `MonoClass *' argument.
16968         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16969         all the methods.
16970         (mono_class_create_generic): Make this static and merge it with
16971         mono_class_create_generic_2(); we're now called automatically from
16972         mono_get_inflated_generic_class().
16973
16974         * loader.c (mono_method_signature): Call
16975         mono_get_inflated_method() here.
16976
16977 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16978
16979         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16980         type of fields with RVA.
16981
16982         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16983         for this pseudo class.
16984         (my_mono_class_from_generic_parameter): Likewise.
16985         (mono_class_init): Allow interfaces to have cctors.
16986
16987 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16988
16989         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16990         lazily for AOT methods.
16991
16992 2005-07-05  Martin Baulig  <martin@ximian.com>
16993
16994         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16995         returns FALSE for a successful match, not TRUE.
16996
16997 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16998
16999         * loader.c (mono_method_get_index): Optimize this a bit.
17000
17001 2005-07-04  Martin Baulig  <martin@ximian.com>
17002
17003         * class.c
17004         (class_compute_field_layout): Move the check for generic type
17005         definitions into mono_class_layout_fields().  Fixes #74684.
17006         (mono_class_from_generic_parameter): Correctly compute
17007         `klass->parent'; fixes #75457.
17008
17009         * reflection.c (register_assembly, register_module): Make sure
17010         `domain->rejobject_hash' is already created.
17011
17012 2005-07-02  Martin Baulig  <martin@ximian.com>
17013
17014         * class-internals.h
17015         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
17016         `MonoDynamicGenericClass'.      
17017
17018 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
17019
17020         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
17021         returned by a field getter is null, since null is a valid value.
17022
17023 2005-07-01  Martin Baulig  <martin@ximian.com>
17024
17025         * reflection.c (mono_reflection_generic_class_initialize): Update
17026         the `dgclass->fields [i].parent' to the correct class.
17027         (mono_image_get_fieldref_token): Use the declaring type, not the
17028         reflected type.
17029
17030 2005-07-01  Martin Baulig  <martin@ximian.com>
17031
17032         * loader.c (find_method): Also look in the interfaces; fixes #75429.
17033
17034 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
17035
17036         * threads.c (thread_cleanup): assert that thread != NULL
17037         (wait_for_tids_or_state_change): We were using the wrong variable
17038         when accessing wait->threads. `i' was always out of the bounds of
17039         the array.
17040
17041 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17042
17043         * loader.c: map user32 and kernel32 to libMonoSupportW
17044
17045 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17046
17047         * appdomain.c (unload_thread_main): Mark this as WINAPI.
17048
17049 2005-06-28  Martin Baulig  <martin@ximian.com>
17050
17051         * loader.c (method_from_methodspec): Fix #75334.
17052
17053 2005-06-28  Martin Baulig  <martin@ximian.com>
17054
17055         Fix #74953 - Arrays now implement the generic IList<T> interface
17056         on the 2.0 platform.
17057
17058         * class-internals.h (MonoDefaults): Added `generic_array_class'.
17059
17060         * reflection.c (mono_class_bind_generic_parameters): New public
17061         function; similar to mono_reflection_bind_generic_parameters(),
17062         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
17063
17064         * domain.c (mono_init_internal): Try to initialize.
17065         `mono_defaults.generic_array_class' here; this'll only succeed if
17066         we're using the 2.0 corlib.
17067
17068         * icall.c
17069         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
17070         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
17071         (mono_lookup_internal_call): Added support for nested classes.
17072
17073         * loader.c
17074         (mono_get_method_from_token): Set `result->signature->pinvoke' if
17075         we're an interncall and have generic arguments.
17076
17077         * class.c
17078         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
17079         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
17080         instance of System.Array.InternalArray<T> for arrays, so they
17081         implement the generic IList<T> interface.
17082
17083 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
17084
17085         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
17086         (chastamar@yahoo.com). Fixes #75374.    
17087
17088 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
17089
17090         * culture-info-table.h: regenerated.
17091
17092 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17093
17094         * icall.c: handle spaces correctly for base64 strings.
17095
17096 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17097
17098         * *.c: Kill some warnings.
17099
17100 2005-06-23  Duncan Mak  <duncan@novell.com>
17101
17102         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
17103         that this builds on Solaris 10 (x86).
17104
17105 2005-06-23  Martin Baulig  <martin@ximian.com>
17106
17107         * class.c
17108         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
17109         generic type definitions.
17110
17111 2005-06-23  Martin Baulig  <martin@ximian.com>
17112
17113         Fix #75331.
17114
17115         * metadata.c (mono_class_get_overrides): Renamed to
17116         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
17117         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
17118         pass it to mono_get_method_full().
17119
17120 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
17121
17122         * reflection.c (mono_reflection_create_runtime_class): take the
17123         mono_domain_lock in this method. Prevents deadlocks
17124
17125 2005-06-22  Martin Baulig  <martin@ximian.com>
17126
17127         * loader.c (method_from_methodspec): Fix #75330.
17128
17129 2005-06-22  Martin Baulig  <martin@ximian.com>
17130
17131         * reflection.c (type_get_qualified_name): Use
17132         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
17133         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
17134         argument; use it if we don't have an assembly name.
17135
17136 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
17137
17138         * object.c: In mono_message_init, set "copy out" flag for in
17139         parameters with the [Out] flag.
17140
17141 2005-06-21  Martin Baulig  <martin@ximian.com>
17142
17143         * class.c
17144         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
17145         and MONO_TYPE_PTR.
17146
17147 2005-06-21  Martin Baulig  <martin@ximian.com>
17148
17149         * class.c (mono_class_init): Don't initialize `class->fields' for
17150         generic instances since they're initialized again in
17151         compute_field_layout(). 
17152         (compute_field_layout): Set the field's `generic_info' here; fix
17153         #75320. 
17154
17155 2005-06-21  Martin Baulig  <martin@ximian.com>
17156
17157         * class-internals.h
17158         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
17159
17160         * metadata.c (mono_metadata_generic_method_equal): Also
17161         distinguish the `generic_class'; fixes #75334.
17162
17163 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17164
17165         * domain.c:
17166         * appdomain.c:
17167         * domain-internals.h:
17168         * reflection.c: 'domain_assemblies' field is now protected by its own
17169         lock. Don't call into managed code to run the AssemblyLoad event if we
17170         now there are no registered delegates for it.
17171
17172 2005-06-20  Martin Baulig  <martin@ximian.com>
17173
17174         * class.c (mono_class_is_assignable_from): Use a custom version of
17175         mono_class_has_parent() to make things work for generic instances;
17176         fix #75300.
17177
17178 2005-06-20  Martin Baulig  <martin@ximian.com>
17179
17180         * loader.c (method_from_methodspec): Apply a patch from
17181         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
17182
17183 2005-06-20  Martin Baulig  <martin@ximian.com>
17184
17185         * class.c (mono_class_init): Reverted Zoltan's last change; it
17186         breaks generics.
17187
17188 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * threads.c (wait_for_tids_or_state_change): Add missing locking.
17191
17192 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17193
17194         * socket-io.c: fix the index in the socket array for writable/error
17195         sockets. Fixes bug #75306.
17196
17197 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17198
17199         * class.c (mono_class_init): Allow interfaces to have static ctors.
17200
17201 2005-06-17  Martin Baulig  <martin@ximian.com>
17202
17203         * loader.c (method_from_methodspec): Use `context->container' when
17204         parsing the `gmethod->inst'.
17205
17206 2005-06-17  Martin Baulig  <martin@ximian.com>
17207
17208         * class.c (mono_type_get_name_recurse): Don't add the assembly
17209         name for type arguments.
17210
17211 2005-06-15  Martin Baulig  <martin@ximian.com>
17212
17213         * reflection.c (mono_image_get_inflated_method_token): Encode
17214         correct klass; fixes #75260.
17215
17216 2005-06-13 Michal Moskal <malekith@nemerle.org>
17217
17218         * icall.c: Make GetCorrespondingMethod/Constructor take
17219         MonoReflectionMethod method not MonoMethod. Removed
17220         MonoType.GetCorrespondingField, and make
17221         MonoGenericType.GetCorrespondingField take name not
17222         MonoClassField.
17223
17224 2005-06-13  Michal Moskal <malekith@nemerle.org>
17225
17226         * reflection.c (field_encode_signature, encode_locals):
17227          Make sizes of buffers for types larger (for big generic types).
17228          (create_generic_typespec,
17229          mono_reflection_sighelper_get_signature_local,
17230          mono_reflection_sighelper_get_signature_field):
17231          Add asserts for too small buffers.
17232
17233 2005-06-15  Martin Baulig  <martin@ximian.com>
17234
17235         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
17236         if our parent is not a dynamic type.
17237
17238 2005-06-15  Martin Baulig  <martin@ximian.com>
17239
17240         * class-internals.h (MonoTypeNameFormat): New enum.
17241
17242         * class.c
17243         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
17244         (mono_type_get_full_name): Removed.
17245         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
17246         argument instead of the boolean's.
17247
17248         * icall.c (ves_icall_System_MonoType_getFullName):
17249         Added `gboolean assembly_qualified'.    
17250
17251         * reflection.h
17252         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
17253
17254         * reflection.c (mono_reflection_parse_type): Parse the new type
17255         name format.
17256
17257 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17258
17259         * icall.c: no need to convert from utf16 to utf8 and then back again
17260         after the call to GetLogicalDrives.
17261
17262 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17263
17264         * icall.c: frombase64. Fix problems exposed by new tests.
17265
17266 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17267
17268         * icall.c: added internal calls for converting char [] and strings in
17269         base64 into byte [].
17270
17271 2005-06-10  Martin Baulig  <martin@ximian.com>
17272
17273         * class.c (mono_class_create_generic_2): Read the nested classes
17274         from the metadata rather than from `gklass->nested_classes' since
17275         `gklass' might not be initialized yet.
17276
17277 2005-06-09  Duncan Mak  <duncan@novell.com>
17278
17279         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
17280         all public headers. Fixes #74919.
17281
17282 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
17283
17284         * domain.c: The key for proxy_vtable_hash is now a pointer
17285         array. Added new GHashFunc and GCompareFunc functions for this.
17286
17287         * class.h: The list of interfaces in MonoRemoteClass is known in
17288         advance and can't grow (we create a new MonoRemoteClass if needed),
17289         so now the interface array can be allocated together with
17290         MonoRemoteClass.
17291         
17292         * object.c: Added a new method create_remote_class_key.
17293         Fixed mono_remote_class so it does not depend on
17294         mono_upgrade_remote_class.
17295         Removed extend_interface_array.
17296         Added new method clone_remote_class(), which makes a copy of a remote
17297         class and adds a new interface or class to it.
17298         mono_upgrade_remote_class() now creates a new remote class (or gets
17299         it from the cache) if an vtable upgrade is needed. In this way
17300         we make sure that other objects sharing the same remote class
17301         don't get the new vtable with unwanted interfaces.
17302         
17303         * object-internals.h:
17304         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
17305         
17306         * marshal.c: Track changes in mono_upgrade_remote_class().
17307
17308 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
17309         * icall.c: Add runtime methods for obtaining members of inflated
17310         class, which were created from supplied non-inflated members. It
17311         is used in internal Get{Method,Constructor,Field} methods in
17312         System.Type
17313
17314 2005-06-09  Martin Baulig  <martin@ximian.com>
17315
17316         * reflection.c
17317         (mono_reflection_bind_generic_method_parameters): Fix #75169.
17318
17319 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17320         * reflection.c (mono_image_basic_init): Define
17321         Version in MonoDynamicAssembly. 
17322         
17323 2005-06-08  Martin Baulig  <martin@ximian.com>
17324
17325         Fix #75136.
17326
17327         * loader.c
17328         (mono_method_signature_full): New public method; takes a
17329         `MonoGenericContext *'.
17330         (find_method): Use mono_method_signature_full() and pass the
17331         klass'es context to it.
17332
17333         * class.c (mono_class_is_inflated_method): Use
17334         mono_method_signature_full() and pass the context to it.
17335
17336 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
17337
17338         * object.c: add proper locking in mono_remote_class_vtable(),
17339         fixes possible memory corruption.
17340
17341 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
17342
17343         * marshal.c (mono_remoting_marshal_init): set
17344         initialized after initialization.
17345
17346 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
17347
17348         * locales.c : hush.
17349
17350 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
17351
17352         * object.c (extend_interface_array): fix really silly
17353         memory corrupting / comparison bug.
17354
17355 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17356
17357         * reflection.c: Functions added to support the creation
17358         of CustomAttributeData, which includes Attribute data
17359         used by ReflectionOnly methods.
17360
17361         * reflection.h:  mono_reflection_get_custom_attrs_data and
17362          mono_custom_attrs_data_construct added (functions exposed).
17363
17364          * icall.c: Added mono_reflection_get_custom_attrs_data
17365          as icall.
17366         
17367 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17368
17369         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
17370         lupus's request.
17371
17372 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
17373
17374         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
17375
17376         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
17377         dynamic DllImportAttribute.
17378
17379         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
17380         dynamic DllImportAttribute.
17381
17382         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
17383         Fixes #75162.
17384
17385 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17386
17387         * threads.c: avoid segfault when an unstarted thread is aborted.
17388
17389 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
17390
17391         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
17392         Returns the name and version of the runtime for reporting.
17393
17394 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17395
17396         * appdomain.c: bump corlib version.
17397         * object-internals.h: new field in MonoReflectionAssembly.
17398
17399 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17400
17401         * object-internals.h: Carlos forgot to add this field.
17402
17403 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17404
17405         * icall.c: Added create_version to create instances
17406         of Version of MonoReflectionAssemblyName. This change helps
17407         the AssemblyName tests to keep running fine.
17408         
17409 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
17410   
17411         * object.c (mono_method_return_message_restore): A somehow less
17412         intrusive fix for #75138.
17413
17414 2005-06-03  Raja R Harinath  <rharinath@novell.com>
17415
17416         * object.c (mono_method_return_message_restore): Fix computation
17417         of expected number of out args.
17418
17419 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
17420
17421         * reflection.c (mono_image_get_method_info): Fix the case when the
17422         charset is empty.
17423
17424 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
17425
17426         * object.c: Added missing null check in
17427           mono_method_return_message_restore.
17428
17429 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
17430
17431         * reflection.c (mono_image_get_method_info): Handle the case when
17432         dllentry is empty.
17433
17434 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
17435
17436         * object.c: When creating the vtable for a proxy, take into account
17437         all inherited interfaces, not only the ones registered in
17438         iclass->interfaces. This fixs bug #74996.
17439         Also, in mono_method_return_message_restore, verify that the array
17440         of out args has the expected lengh.
17441
17442 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17443
17444         * socket-io.c: update the timeout in Poll when the call is interrupte.
17445
17446 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17447
17448         * socket-io.c: support abort/suspend in Select_internal after last
17449         change.
17450
17451 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17452
17453         * threadpool.c: remove warning.
17454
17455 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17456
17457         * icall.c:
17458         * socket-io.[ch]: Select_internal uses poll() now when available, thus
17459         removing the 1024 limit from select(). Runtime part of the fix for
17460         bug #71203.
17461
17462 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17463
17464         * socket-io.c: when resolving the addresses for the same
17465         host returned by gethostname(), get the local IPs from the interface
17466         list. Loopback addresses are discarded if the are interfaces up with
17467         non-loopback ones. Fixes bug #63265.
17468
17469 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
17470
17471         * appdomain.c, verify.c, object-internals.h, reflection.c:
17472         bumped corlib number to 36, and added new extra_flags field
17473         to ReflectionMethodBuilder and friends.  Fixes #75060.
17474
17475 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
17476
17477         * gc.c: register a new weak link only if the object is non-null
17478         (fixes bug#75047).
17479
17480 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17481
17482         * culture-info.h : short time pattern too.
17483
17484 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17485
17486         * culture-info.h : expand long time pattern string length.
17487
17488 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17489
17490         * culture-info-table.h : update (more French date format; #72788).
17491
17492 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
17493
17494         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
17495         the method is static. Fixes #75029.
17496
17497 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
17498
17499         * reflection.c: Update the table_idx field of method builders after
17500         saving the module, since it can change. This is a workaround for
17501         bug #74914. 
17502
17503 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17504
17505         * culture-info-table.h : update (additional French date format).
17506
17507 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17508
17509         * icall.c (ves_icall_type_Equals): Revert last change.
17510         
17511         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
17512
17513         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
17514
17515 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
17516
17517         * class-internals.h: Added executioncontext_class field to 
17518         MonoDefaults structure.
17519         * domain.c: Cache System.Threading.ExecutionContext class in 
17520         mono_defaults.
17521         * object.c: Capture the ExecutionContext for asynchroneous calls in
17522          mono_async_result_new.
17523         * object-internals.h: Added execution_context and original_context 
17524         fields to MonoAsyncResult. Added execution_context to MonoThread.
17525         * security-manager.c|.h: Added mono_get_context_capture_method to 
17526         return the capture method (if required by the security manager or by
17527         the framework version used).
17528         * threadpool.c: Apply capture (if present) ExecutionContext in 
17529         mono_async_invoke and revert to original context after it completes.
17530
17531 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
17532
17533         * culture-info-table.h : updated (real hacky solution for zh-CHT).
17534
17535 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
17536
17537         * culture-info-table.h : zh-CHT related workaround.
17538
17539 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
17540
17541         * marshal.c (emit_marshal_custom): Add some error checking and call the
17542         methods in the ICustomMarshaler interface. Fixes #74875.
17543         
17544         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
17545         native->managed wrappers.
17546
17547 2005-05-12  Martin Baulig  <martin@ximian.com>
17548
17549         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
17550         here and use the loader lock.
17551
17552         * mono-debug.c: Properly lock when the debugger is not attached.
17553         (mono_debug_init): Release the initial lock if we're not running
17554         in the debugger.
17555
17556 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
17557
17558         * marshal.c (emit_marshal_custom): Pass through NULL values without
17559         calling the custom marshalling routines.
17560
17561         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
17562         conversion in structures. Fixes #74882.
17563
17564 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
17565
17566         * culture-info-table.h : zh-* cultures were missing.
17567
17568 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
17569
17570         * threads.c: Added a new event background_change_event which is signaled
17571         when a thread changes its background mode.
17572         Moved here several checks previously done in managed code. The checks
17573         require the thread lock, and using the thread lock in managed code
17574         can result in deadlocks.
17575         Merged Start_internal and Thread_internal into a single method. Now 
17576         Thread_internal does all work of creating and starting a thread.
17577         Added icalls for setting and getting the state of the object. Moved from
17578         managed code to avoid locking there.
17579         Added wait_for_tids_or_state_change() which is called instad of
17580         wait_for_tids when waiting for non-backround threads to end. This method
17581         will return if one of the threads ends or the background_change_event
17582         is signaled.
17583         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
17584         the background mode. This method signals the background_change_event
17585         event.
17586         * icall.c:
17587         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
17588         removed Start_internal.
17589         
17590 2005-05-11  Martin Baulig  <martin@ximian.com>
17591
17592         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
17593         to order of some fields to get proper alignment on 64-bit machines.
17594
17595 2005-05-11  Martin Baulig  <martin@ximian.com>
17596
17597         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
17598         changes as they're broken and completely fuck up the debugger.
17599
17600         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
17601
17602 2005-05-10  Martin Baulig  <martin@ximian.com>
17603
17604         * reflection.c (mono_reflection_generic_class_initialize): Don't
17605         call mono_class_setup_parent() here.
17606
17607 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17608
17609         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
17610         send/receive timeout use an integer in milliseconds. We were using a
17611         struct timeval.
17612
17613 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17614
17615         * locales.c:
17616         (internal_get_cultures): reserve the first slot of the array for the
17617         InvariantCulture, which will be filled in managed code.
17618
17619 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
17620
17621         * reflection.c (mono_image_fill_module_table): Initialize the
17622         GENERATION field as well.
17623
17624 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17625
17626         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
17627         Monitor.Enter on the object.
17628
17629 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17630
17631         * threads.c: Enable the wait for running threads when exiting.
17632         * icall.c: Suspend all threads before exiting.
17633
17634 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17635
17636         * assembly.c (mono_assembly_load_reference): Fix warning.
17637
17638 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17639
17640         * threadpool.c: changed the default number of threads per cpu. From now
17641         on, the default will be 20 + (5 * number of cpus) instead of 50.
17642
17643 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * loader.c (mono_method_get_signature_full): Add locking here.
17646
17647 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
17648
17649         * appdomain.c: Moved methods for parsing and freeing assembly
17650         names to assembly.c.
17651         * assembly.c, domain-internals.h: Created public methods for parsing
17652         assembly names. Fixed mono_assembly_load_with_partial_name:
17653         it now finds the best match, taking into account the version,
17654         token and culture specified in the partial name. Also return
17655         the latest version if no version information is specified.
17656
17657 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
17658
17659         * threadpool.c: replace check for SocketAsyncCall class.
17660
17661 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17662
17663         * threadpool-internals.h:
17664         * Makefile.am: added threadpool-internals.h
17665
17666         * threadpool.c: call mono_unhandled_exception on exceptions not handled
17667         that happen in threadpool threads (tested on MS).
17668         (mono_thread_pool_remove_socket): new function that dispatch any pending
17669         AIO call on a socket that is closing. By now only epoll really needs it,
17670         as select/poll wake up when the socket closes.
17671
17672
17673         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
17674
17675 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
17676
17677         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
17678
17679 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
17680
17681         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
17682
17683 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
17684
17685         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
17686         has an abort request, convert it into a suspend request.
17687
17688 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
17689
17690         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
17691         warning for the usage of `UnmanagedFunctionPointerAttribute' which
17692         is not supported yet.
17693
17694 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17695
17696         * image.c: register assemblies loaded from data (bundles) in the loaded
17697         assemblies hash. Fixes bug #74772.
17698
17699 2005-04-29  Martin Baulig  <martin@ximian.com>
17700
17701         * class.c (mono_type_get_name_recurse): Update to the new naming
17702         schema from the latest .NET 2.x beta2.
17703         (mono_class_setup_vtable_general): If we're a generic instance,
17704         copy the vtable from our generic type definition and inflate all
17705         the methods in it.
17706
17707         * loader.c (find_method): Update to the new naming schema from the
17708         latest .NET 2.x beta2.
17709
17710 2005-04-29  Raja R Harinath  <harinath@gmail.com>
17711
17712         * class.c (mono_class_init): Add a mono_loader_unlock to the
17713         #74734 fix.
17714
17715 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17716
17717         * icall.c (ves_icall_System_Environment_Exit): Remove the 
17718         suspend_all_other_threads () call for the time being, since it can hang.
17719
17720         * threads.c (mono_thread_manage): Similarly, disable the waiting for
17721         the background threads to exit, since it can also hang.
17722
17723         * class.c (mono_class_init): Applied patch from Ankit Jain 
17724         (radical@gmail.com). Avoid pending init errors when a field refers
17725         to a nested class using a typeref. Fixes #74734.
17726
17727         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
17728         this for dynamic modules.
17729
17730 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17731
17732         * threads.c: don't wait for threads that are in the process of aborting
17733         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
17734         and waiting for background threads to finish. This makes xsp and
17735         mod-mono-server exit without random length delays and/or hangs.
17736
17737 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17738
17739         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
17740
17741 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
17742
17743         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
17744         dynamic types to prevent infinite loops. Fixes #74727.
17745
17746         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
17747         ..._is_assignable_to.
17748
17749 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
17750
17751         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
17752
17753 2005-04-25  Martin Baulig  <martin@ximian.com>
17754
17755         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
17756
17757         * domain.c
17758         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
17759
17760         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
17761
17762         * reflection.c (build_compressed_metadata): Set metadata header
17763         version to 2.0.
17764
17765 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17766
17767         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
17768         number into an integral and a decimal part. Fixes #70473.
17769
17770         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
17771
17772 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
17773
17774         * culture-info-table.h : reflected the latest locale-builder output.
17775
17776 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17777
17778         * threadpool.c: check for SuspendRequested too when deciding if
17779         mono_thread_interruption_checkpoint should be called.
17780
17781 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17782
17783         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
17784         * threads.c: remove interruption_mutex and use Interlocked instead. When
17785         suspending all the threads, wait for all the suspended events at once.
17786         If we're shutting down and get an APC that is going to be queued,
17787         call mono_thread_execute_interruption immediately, as the thread might
17788         be sleeping on a pthread condition or mutex.
17789
17790         * icall.c: call mono_runtime_set_shutting_down before suspending the
17791         threads.
17792
17793         Fixes bug #74693. And now xsp is happier when exiting.
17794
17795 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17796
17797         * loader.c (mono_stack_walk): Fix #74690.
17798
17799 2005-04-22  Martin Baulig  <martin@ximian.com>
17800
17801         * mono-debug.h (MonoDebugMethodJitInfo): Added
17802         `MonoDebugMethodJitInfo *jit'.
17803
17804         * mono-debug.c (mono_debug_read_method): Cache the
17805         MonoDebugMethodJitInfo in `address->jit'.
17806         (mono_debug_free_method_jit_info): New public method.
17807
17808 2005-04-22  Martin Baulig  <martin@ximian.com>
17809
17810         * class.c (mono_class_is_assignable_from): Disallow
17811         type parameter -> interface.
17812
17813 2005-04-21  Dick Porter  <dick@ximian.com>
17814
17815         * threads.c (mono_thread_create): Turn an assertion into an error.
17816
17817 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17818
17819         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
17820         
17821         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
17822         Fix some gcc 4.0 warnings.
17823
17824 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
17825
17826         * file-io.c: fix alt dir separator char on unix systems
17827         and cleanup (fixes bug #71214).
17828
17829 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
17830
17831         * marshal.c: Use CALLVIRT instead of CALL when dispatching
17832         a call to a remote domain, since the method may be an
17833         interface method in the client domain. This fixes bug #74192.
17834
17835 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17836
17837         * threadpool.c: recv/send are now performed before going back to managed
17838         code to save one transition.
17839
17840 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17841
17842         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
17843
17844         * metadata/threadpool.c: removed hack to workaround the bug above.
17845
17846         Fixes bug #74618.
17847
17848 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17849
17850         * reflection.c reflection.h: Fix handling of parameter defaults in
17851         dynamic methods. Also fixes handling of parameter attributes.
17852         Fixes #74609.
17853
17854         * mono-debug.c (mono_debug_close_image): Fix warning.
17855
17856 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17857
17858         * socket-io.h: replaced old unused field with new 'blocking'.
17859         * threadpool.c: restore socket blocking state on windows(tm).
17860
17861 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
17862
17863         * icall.c: don't return the codebase in the AssemblyName[] returned by
17864         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
17865         * object-internals.h: Removed FIXME (fields were presents) and fixed
17866         versioncompat declaration.
17867
17868 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17869
17870         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
17871         not closed, so don't cleanup when it happens.
17872
17873 2005-04-13  Chris Toshok  <toshok@ximian.com>
17874
17875         * mono-debug-debugger.h: change prototype for
17876         mono_debugger_lookup_type.
17877
17878         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
17879         this function, although it should probably be named
17880         mono_debugger_init_type.
17881
17882 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17883
17884         * threadpool.c: fix non-AIO case.
17885
17886 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17887
17888         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17889         the built-in profiler to measure just JIT compilation times.
17890
17891 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17892
17893         * threadpool.c: the epollfd might be closed by another thread at
17894         any time, so ignore EBADF at treat it as a "we're closing" sign.
17895
17896 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17897
17898         * threadpool.c: release the semaphores with a count equals to the number
17899         of working threads in both IO and regular pools. Fixed typo that messed
17900         up the count of IO pool threads. Don't initialize the pipe handles if
17901         we're using epoll.
17902
17903 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17904
17905         * threadpool.c: some systems don't like a NULL when deleting the socket
17906         from epoll.
17907
17908 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17909
17910         * threadpool.c: fix semaphore allocation.
17911
17912 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17913
17914         * threadpool.c: added epoll() based implementation for asynchronous IO
17915         that is used instead of the default poll() when available.
17916         It can be disabled by setting MONO_DISABLE_AIO.
17917
17918 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17919
17920         * threadpool.c: windows needs 'closesocket' and instead of returning
17921         0 when the stream is closed while in select, it returns -1. Fixes bug
17922         #74573.
17923
17924 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17925
17926         * class.c (class_compute_field_layout): Fix the regression caused by
17927         the previous try.
17928
17929 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17930
17931         * threadpool.c: separate pool for socket async. IO.
17932         * threadpool.h: mono_max_worker_threads is not a global any more.
17933
17934 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17935
17936         * class.c (class_compute_field_layout): Fix #74549.
17937
17938 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17939
17940         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17941         use 2 connected sockets instead.
17942
17943 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17944
17945         * mono-config.c: Add new entry point for mkbundle
17946         mono_config_parse_memory. 
17947
17948 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17949
17950         * threadpool.c: removed another unused function.
17951
17952 2005-04-08  Ankit Jain  <radical@corewars.org>
17953
17954         * reflection.c (get_default_param_value_blobs): Add 'types'
17955         parameter to get the types encoded in the constant table.
17956         (mono_param_get_objects): Use the type from the constant table,
17957         not the type of the parameter, when creating default values.
17958         Handle null default values correctly.
17959
17960 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17961
17962         * file-io.c:
17963         * file-io.h:
17964         * threadpool.c:
17965         * threadpool.h:
17966         * icall.c:
17967         * socket-io.c: removed dead code for async IO.
17968
17969 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17970
17971         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17972
17973         * threadpool.c: intercept socket async. calls and pass them to a thread
17974         that is polling and dispatching the job items to the threadpool as
17975         socket become ready. Fixes bugs #71217, #71933.
17976
17977         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17978         between char and short/ushort arrays.
17979
17980         * socket-io.c: remove dead code.
17981
17982 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17983
17984         * locales.c,
17985           icall.c : removed InternalToUpper_Comp() and
17986           InternalToLower_Comp().
17987
17988 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17989
17990         * char-conversions.h : The tables were incorrectly generated. Should
17991           be generated against invariant culture.
17992
17993 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17994
17995         * object.c (mono_runtime_invoke_array): Fix return value when 
17996         passing pre-created valuetype objects to ctors.
17997
17998         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17999         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
18000         Fixes #74338.
18001
18002 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
18003
18004         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
18005         only used with --security and hides the wrong corlib version error.
18006
18007 2005-03-30  Joshua Tauberer  <tauberer@for.net>
18008
18009         * class.c: Changed mono_class_name_from_token so that types
18010         outside of a namespace don't have an initial period.  Improved
18011         the g_warning message used in _mono_class_get when loading
18012         fails.
18013         * assembly.c: In mono_assembly_load_reference, when an assembly
18014         can't be found, "No such file or directory" is misleading and
18015         unhelpful because a few paths were checked for the presence of
18016         the assembly.  When that happens (ENOENT), display a nicer
18017         message indicating the directories that were searched.  In all
18018         cases, the warning is made easier to read for non-hackers.
18019
18020 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
18021
18022         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
18023         project/solution.
18024         * appdomain.h|domain.c: Removed inline from functions.
18025         * appdomain.c: Reduced warnings when compiling on windows.
18026         * icall.c: Fixed output_debug declaration to gunichar2*.
18027         * mono-config.c: Reduced warnings when compiling on windows.
18028         * rand.c: Added missing "windows.h". Added missing return value.
18029         * rawbuffer.c: Added missing winsock2.h for windows.
18030         * sysmath.h: Added mono-compiler.h header to allow/ease 
18031         compilation with non-GCC compilers.
18032         * threads.c: Fixed declarations to compile with VS.NET C compiler.
18033         Removed cast warnings.
18034
18035         Adapted from the work of J Lothian (for VC6).
18036
18037 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
18038
18039         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
18040         from default_path.
18041
18042 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
18045         the 2.0 profile.
18046
18047 2005-03-27  Raja R Harinath  <harinath@gmail.com>
18048
18049         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
18050         has to be in $(exec_prefix).  $(prefix) is for arch-independent
18051         stuff, and it would probably use $(prefix)/share rather than
18052         $(prefix)/lib.
18053
18054 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18055
18056         * console-io.c: added 2 includes that might be missing.
18057
18058 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18059
18060         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
18061         profile.
18062
18063         * reflection.c (create_custom_attr): Allocate the params array using
18064         alloca so it gets GC tracking.
18065
18066 2005-03-23  Chris Toshok  <toshok@ximian.com>
18067
18068         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
18069         out some spew.
18070
18071 2005-03-24  Raja R Harinath  <rharinath@novell.com>
18072
18073         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
18074         changes to pick up any changes in prefix, etc.
18075
18076 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18077
18078         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
18079         
18080         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
18081         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
18082
18083 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18084
18085         * class-internals.h object-internals.h class.c reflection.c: Extend the
18086         mono_lookup_dynamic_token () function to return the class of the
18087         token as well. 
18088
18089         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
18090         well. Fixes #73848.
18091
18092 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18093
18094         * security-manager.c: Skip inheritance checks for intra-corlib
18095         class inheritance and method overrides. This skips a lot of checks
18096         and (anyway) permissions cannot work until corlib is loaded.
18097
18098 2005-03-23  Martin Baulig  <martin@ximian.com>
18099
18100         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
18101         MONO_TYPE_GENERICINST.  
18102
18103 2005-03-23  Martin Baulig  <martin@ximian.com>
18104
18105         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
18106
18107 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18108
18109         * class.c: added locking comments to some functions.
18110         Cache the interface offsets arrays (saves about 20 KB
18111         of runtime memory in a typical app).
18112         Reduce the time overhead in mono_class_setup_supertypes ().
18113
18114 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
18115
18116         * icall.c: speedup and fix leaks in GetMethodsByName and
18117         GetPropertiesByName.
18118
18119 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18120
18121         * reflection.c: some locking fixes.
18122
18123 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18124
18125         * metadata.c: added missing break in case statement.
18126
18127 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
18130         typedbyref return values. Fixes #73941.
18131
18132 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18133
18134         * security-manager.c|h: Added demandunmanaged method and 
18135         suppressunmanagedcodesecurity class to MonoSecurityManager.
18136         Renamed aptc class to allowpartiallytrustedcallers.
18137
18138 2005-03-17  Martin Baulig  <martin@ximian.com>
18139
18140         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
18141
18142 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18143
18144         * file-io.c: disabled file async. IO using aio_*. It uses the
18145         threadpool now. Workaround for bug #73718.
18146
18147 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18148
18149         * assembly.h, mono-config.c: added code to deal with bundled configs
18150         for bundled assemblies.
18151
18152 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
18153
18154         * *.c, private.h: cleanup, removing old private.h header file.
18155
18156 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18157
18158         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
18159         and throw_on_unmappable_char attributes.
18160
18161 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
18162
18163         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
18164         _ProcessName_internal.
18165
18166 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18167
18168         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
18169         #73631.
18170
18171         * icall.c threads.c threads-types.h: Remove slothash icalls as they
18172         are no longer used.
18173
18174 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18175
18176         * object.c (compute_class_bitmap): Add support for generics. Fixes
18177         #73527.
18178
18179 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
18180
18181         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
18182
18183 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18184
18185         * filewatcher.c: commented out the code for windows watcher, as we don't
18186         use it (we use the managed implementation instead).
18187
18188 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
18189
18190         * object-internals.h (MonoThread): Remove 'unused1' field.
18191
18192         * appdomain.c: Bump corlib version.
18193
18194         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
18195
18196         * reflection.c (mono_reflection_create_runtime_class): Remove the
18197         AssemblyBuilder.Save optimization since it causes too many problems.
18198
18199 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
18200
18201         * exception.c|h: Added mono_get_exception_reflection_type_load to
18202         create a ReflectionTypeLoadException object.
18203         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
18204         to return NULL is a InheritanceDemand fails during reflection. Updated
18205         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
18206         ReflectionTypeLoadException if an InheritanceDemand fails during 
18207         reflection. Added icall mapping for GetLinkDemandSecurity.
18208         * security-manager.c|h: Added ves_icall_System_Security_
18209         SecurityManager_GetLinkDemandSecurity internal call to return the
18210         class and methods permissions set for a LinkDemand. Removed unused
18211         fields in MonoSecurityManager.
18212
18213 2005-03-10  Martin Baulig  <martin@ximian.com>
18214
18215         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
18216         it's a generic instance.
18217
18218 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
18219
18220         * reflection.c (mono_get_object_from_blob): Applied patch from
18221         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
18222
18223         * class.c (mono_class_is_assignable_from): Another try at fixing 
18224         #73469 without breaking anything.
18225
18226 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18227
18228         * class.c: (mono_class_is_assignable_from): Revert the last changes
18229         since they don't work with generics.
18230         
18231         * class.c (mono_class_is_assignable_from): Fix build bustage.
18232
18233         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
18234         the managed IsAssignableFrom method. Fixes #73469.
18235
18236         * reflection.c (mono_reflection_call_is_assignable_from): New helper
18237         function.
18238
18239 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18240
18241         * object.c (mono_load_remote_field_new): Fix returning uninitialized
18242         memory when the remoting callback does not sets the out arguments.
18243         Fixes #73007.
18244
18245         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
18246         by mistake.
18247
18248         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
18249
18250         * object-internals.h (MonoStackFrame): Sync with managed object layout.
18251
18252         * appdomain.c: Bump corlib version.
18253
18254 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18255
18256         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
18257         function.
18258
18259         * threads.c (mono_thread_attach): Detect threads which are not started
18260         by the GC pthread wrappers.
18261
18262 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
18263
18264         * icall.c: Added new icall for RNG.
18265         * rand.c|h: Added new icall to open the RNG. This allows to share a 
18266         single handle on Linux to access /dev/urandom and fix #73183.
18267
18268 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18269
18270         * object.c: setting the new vtable in a transparent proxy object must
18271         not change the GC descriptor.
18272
18273 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18274
18275         * object.c: fixed compilation without GCJ support.
18276         * reflection.c: for runtime-created types ensure klass->has_references
18277         is correct (bug #73215).
18278
18279 2005-03-02  Martin Baulig  <martin@ximian.com>
18280
18281         * class.c (mono_class_is_assignable_from): Make this work if
18282         `oklass' is a generic instance; fixes #72831.
18283
18284 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
18285
18286         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
18287         with hasthis set.
18288         
18289         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
18290
18291         * marshal.c: Reorganize native->managed marshalling code to also use
18292         the emit_marshal_... functions.
18293
18294 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
18295
18296         * object.c: typed allocs have issues with bitmap sizes > 30,
18297         so check for max_set >= 30.
18298
18299 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
18300
18301         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
18302         managed code. Fixes #73012.
18303
18304         * metadata.h (MonoMarshalSpec): Add elem_mult field.
18305
18306         * metadata.c reflection.c: Load/Emit elem_mult as well.
18307         
18308         * metadata.h (MonoMarshalSpec): Add comment.
18309
18310         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
18311
18312         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
18313         num_elem to -1 if not given.
18314
18315         * object-internals.h (MonoReflectionMarshal): Add has_size field.
18316
18317         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
18318         given values.
18319
18320 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
18321
18322         * null-gc.c (mono_gc_free_fixed): Was not compilable.
18323
18324 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
18325
18326         * reflection.c (encode_marshal_blob): Encode param_num field as well.
18327
18328         * object-internals.h (MonoReflectionMarshal): Add param_num field.
18329
18330 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
18331
18332         * object.c: generalized the reference bitmap creation
18333         and added hooks for the new GC.
18334         * class-internals.c: removed the gc_bitmap field from MonoClass.
18335
18336 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18337
18338         * domain.c: help the compiler to produce better code
18339         in mono_jit_info_table_find ().
18340
18341 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
18342
18343         * object.c: make all allocations look typed.
18344
18345 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18346
18347         * socket-io.c: load Mono.Posix if it's not loaded already
18348         (fixes bug#73033).
18349
18350 2005-02-24  Martin Baulig  <martin@ximian.com>
18351
18352         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
18353         * reflection.c (dup_type): Likewise.
18354
18355 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
18356
18357         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
18358         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
18359
18360 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18361
18362         * domain.c, threads.c, object-internals.h: make the critical thread
18363         local vars use the fast access mode (even when we're compiled in
18364         a lib). Provide accessors to be used by the jit during codegen.
18365
18366 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18367
18368         * appdomain.c: Changed hook functios behavior to include
18369         support for the reflection only assemblies. Some icalls were changed
18370         to support the mentioned assemblies too. Signatures of static methods
18371         try_assembly_resolve and real_load now have an additional parameter:
18372         refonly.
18373
18374         * assembly.c: General changes to mono_assembly_ methods to support
18375         reflection only api. Functions mono_assembly_open, mono_assembly_load,
18376         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
18377         suffix, to support an additional gbool parameter to specify whether
18378         the assembli is reflection only or not. Created some new hook functions 
18379         to add support for reflection only assemblies. Signatures of static 
18380         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
18381         have now an additional parameter: refonly.
18382
18383         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
18384         indicating whether the assembly is reflection only or not.
18385
18386         * exception.c: Add mono_get_exception_invalid_operation.
18387
18388         * icall.c: Throw an InvalidOperationException when trying to invoke
18389         a property/method/event, or trying to set/get the value of a field.
18390         Also add an icall to retrieve the ref_only flag to the
18391         MonoReflectionAssembly.
18392
18393 2005-02-23  Chris Toshok  <toshok@ximian.com>
18394
18395         Part of fix for #72827.
18396         * mono-debug.c (mono_debug_add_method): add lexical block data to
18397         the info we write.  Kind of a hack at the moment - we copy the
18398         lexical block info from the MonoDebugMethodInfo to the
18399         MonoDebugMethodJitInfo here, before writing it.
18400         (mono_debug_read_method): read the lexical block info.
18401
18402         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
18403
18404         * debug-mono-symfile.h: add lexical block support.
18405
18406         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
18407         support.
18408
18409 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * loader.c (mono_lookup_pinvoke_call): Fix warning.
18412
18413         * object.c (mono_runtime_free_method): Call mono_free_method () and
18414         put the TODOs there.
18415
18416         * loader.c (mono_free_method): Free up most memory allocated for 
18417         dynamic methods.
18418
18419 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18420
18421         * reflection.c: properly flag a Type argument to a
18422         named custom attr value (bug #72248).
18423
18424 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18425
18426         * reflection.c: reduce code duplication in named custom
18427         attribute encoding.
18428
18429 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
18430
18431         * reflection.c: properly encode custom attrs of type object
18432         (bug #72649).
18433
18434 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18435
18436         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
18437
18438 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
18439
18440         * socket-io.c: load System.dll if it's not loaded already
18441         (bug #72850 and #70477).
18442
18443 2005-02-21  Martin Baulig  <martin@ximian.com>
18444
18445         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
18446         generic instances.
18447
18448 2005-02-21  Martin Baulig  <martin@ximian.com>
18449
18450         * reflection.c (mono_image_build_metadata): We also need to
18451         "fixup" the MethodImpl table after we computed the final method
18452         indices.  Call fixup_methodimpl() to do that.
18453         (fixup_methodimpl): New private method.
18454
18455 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
18456
18457         * assembly.c: special case mscorlib.dll (bug#72536),
18458         patch from Carlos Alberto Cortez.
18459
18460 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * threads-types.h threads.c: Fix build bustage.
18463
18464         * threads.c: Use a union for long<->double conversions.
18465
18466         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
18467         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
18468
18469         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
18470         containing the checkpoint call with NOT_TAKEN.
18471         
18472         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
18473         checkpoint before pushing the arguments, so they won't have to be
18474         spilled to stack.
18475
18476 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18477
18478         * domain.c, assembly.c, domain-internals.h: make some data
18479         const and relocation-free.
18480
18481 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18482
18483         * object.c, appdomain.c, class-internals.h: introduce the
18484         MonoClassRuntimeInfo structure to hold the info needed to
18485         use a class at runtime. Made mono_class_vtable() lock-free
18486         for all the appdomains.
18487
18488 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
18489
18490         * metadata-internals.h, image.c: introduce a per-image mempool to
18491         be used for memory that has the same lifetime as the image.
18492
18493 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
18494
18495         * domain.c: In mono_init_internal(), instead of selecting the first
18496         runtime version supported by an executable, get a list of all
18497         supported versions and select the one for which an mscorlib exists
18498         (since even if the runtime supports a given version, it doesn't mean
18499         that the framework for that version is installed).
18500         Modified get_runtimes_from_exe to support this behavior.
18501         In supported_runtimes, added information about additional system
18502         assembly versions.
18503         
18504         * assembly.c: Added support for more than one system assembly version
18505         per runtime version. Updated the assembly list.
18506         In mono_assembly_remap_version, removed the initial version check,
18507         since we don't know to which version we need to compare until we
18508         get the version set on which the assembly is based.
18509         Moved the code for loading corlib into the new method
18510         mono_assembly_load_corlib(), so it can be used by the initialization
18511         code.
18512         
18513         * domain-internals.h: Updated data structures and added declaration
18514         for mono_assembly_load_corlib.
18515
18516 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18517
18518         * reflection.c (resolve_object): Fix the creation of the signature in 
18519         the SignatureHelper case.
18520
18521         * assembly.c (mono_assembly_remap_version): Fix binary search.
18522         
18523 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
18524  
18525         * class.c: Added inheritance check when a method is overloaded (from a
18526         virtual method or when implementing an interface) and when a class is
18527         inherited. Added functions to set a failure for a class and to 
18528         retreive the exception from a failure.
18529         * class-internals.h: Added fields to MonoClass to keep the exception
18530         information status for inheritance (or other exceptions) to be thrown
18531         later (i.e. not at load time).
18532         * object.c: Throw the inheritance SecurityException when a type is to 
18533         be created with either class or method inheritance violations.
18534         * reflection.c|h: Fix when getting declsec from a class. Removed 
18535         unrequired code for class. Improved sanity in parameter naming.
18536         * security-manager.c|h: Added functions to check for class and method
18537         inheritance.
18538
18539 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18540
18541         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
18542         and has_finalize in dynamic types as well.
18543
18544 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
18545
18546         * culture-info-table.h : fixed currency format for en-GB (and so on).
18547
18548 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
18549
18550         * gc.c: ensure the GC handles never have 0 as a value.
18551
18552 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
18553
18554         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
18555         a pointer to a struct to unmanaged code. Fixes #72625.
18556
18557 2005-02-16  Martin Baulig  <martin@ximian.com>
18558
18559         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
18560
18561 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
18562
18563         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
18564
18565 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
18566
18567         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
18568
18569         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
18570         UnmanagedFunctionPointerAttribute, use it for determining calling convention
18571         etc. Fixes #71471.
18572
18573         * reflection.c (mono_custom_attrs_get_attr): New helper function.
18574
18575         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
18576
18577 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
18578
18579         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
18580         changes to make the current context a field in MonoThread.
18581
18582 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
18583
18584         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
18585         the last change.
18586         
18587         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
18588         extracted from mono_marshal_get_native_wrapper.
18589
18590         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
18591         to create wrappers around native functions.
18592
18593         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
18594         delegates for arbitrary function pointers. Fixes #71472.
18595
18596 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18597
18598         * threads.c: cleaned up the code a little.
18599
18600 2005-02-15  Martin Baulig  <martin@ximian.com>
18601
18602         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
18603         the data table.
18604
18605         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
18606         allocate larger chunks if needed.
18607
18608 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18609
18610         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
18611         in by mistake.
18612
18613 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
18614
18615         * domain.c: keep the domains in an array and ensure the domain ids
18616         are kept small, so they can be used as indexes to domain-specific data
18617         with a small memory overhead.
18618
18619 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18620
18621         * icall.c: Handle byref types in Type icalls. Fixes #72544.
18622
18623 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
18624
18625         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
18626
18627 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
18630
18631         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
18632         values.
18633
18634         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
18635         
18636 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18637
18638         * domain-internals.h: add the hashtable here.
18639
18640         * class-internals.h: Remove `info' from MonoMethod
18641
18642         * domain.c: Add a new hashtable, jit_trampoline_hash
18643
18644 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18645
18646         * object.c: don't set the value of static fields
18647         (fixes bug#72494).
18648
18649 2005-02-11  Martin Baulig  <martin@ximian.com>
18650
18651         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
18652         (mono_debug_add_method): Silently ignore the method if it's too big.
18653         (mono_debug_add_type): Likewise.
18654
18655 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
18656
18657         * threads.c, appdomain.c: remove #ifdefs from the code.
18658
18659 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18660
18661         * metadata-internals.h: Added flags to MonoAssembly to cache the most
18662         common security informations. This allows us to stay in unmanaged code
18663         when doing LinkDemand and it's special cases (except for the first 
18664         time for initialization). The flags a very much used with --security.
18665         * reflection.c|h: Added code to get declarative security attributes 
18666         for LinkDemand and InheritanceDemand. This required to refactor the
18667         existing code for Demand.
18668         * security-manager.c|h: Added new method fields for the special cases
18669         of LinkDemand.
18670
18671 2005-02-10  Martin Baulig  <martin@ximian.com>
18672
18673         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
18674         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
18675
18676 2005-02-10  Martin Baulig  <martin@ximian.com>
18677
18678         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
18679         debugging code; this is almost a complete rewrite.
18680
18681         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
18682
18683 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18684
18685         * domain.c, object.h: expose mono_string_equal () and 
18686         mono_string_hash ().
18687         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
18688         it's implemented in managed code.
18689
18690 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18691
18692         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
18693         lo leak objects between appdomains.
18694
18695 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18696
18697         * assembly.c: old compilers compilation fix from 
18698         robertj@gmx.net (Robert Jordan).
18699
18700 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
18701
18702         * class-internals.h: Little reminder for the future.
18703
18704         * debug-helpers.c: Fix up wrapper_type_names
18705
18706 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18707
18708         * image.c, metadata-internals.h: when loading an image from a file,
18709         mmap all of it and use the same codepaths as when using a
18710         in-memory image: the code is simpler and we use less memory
18711         (both writable and readonly).
18712
18713 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18714
18715         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
18716         API to alloc runtime data structures that need to be tracked by the
18717         GC and contain pointers.
18718         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
18719         make the code more readable and eventually use a different GC.
18720
18721 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
18722
18723         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
18724         for out arguments.
18725         
18726 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
18727
18728         * object.c: In release_type_locks(), don't release the cctor lock
18729         if it has already been released. This fixes a crash in the
18730         thread5 test.
18731
18732 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18733
18734         * gc.c, marshal.c, icall.c: register a delegate for finalization
18735         only when the native function pointer has been allocated for it.
18736
18737 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18738
18739         * object.c: cleaned up some code, allocate objects that are
18740         pointer free with the atomic malloc variant. Allocate memory
18741         for static data from the mempool if it's pointer-free.
18742         Allocate the bounds array at the end of the array data, when needed.
18743         * object-internals.h, object.h: move a private function in a private
18744         header.
18745         * class.c: handle missing case in tracking references in fields.
18746
18747 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18748
18749         * class.c, class-internals.h: keep track if a type has
18750         reference fields in either the instance or static fields.
18751
18752 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
18753
18754         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
18755         and renamed to MonoRuntimeInfo. Added fields to store the expected
18756         framework assembly version. Changed mono_get_framework_version and
18757         mono_get_runtime_version for a single mono_get_runtime_info method.
18758         
18759         * assembly.c: Added method to remap system assembly versions to the
18760         current executing runtime version. Removed old mapping code.
18761         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
18762         
18763         * icall.c, reflection.c: Track api changes.
18764
18765 2005-02-06  Miguel de Icaza  <miguel@novell.com>
18766
18767         * loader.c (method_from_memberref): Improve error reporting,
18768         produce the class name instead of the typeref/typedef index. 
18769
18770 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
18771
18772         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
18773
18774 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18775
18776         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
18777         stdcall and charset name mangling.  Reorganize the code and add
18778         some tracing stuff.
18779
18780 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18781
18782         * monodiet.c: More iters!
18783
18784         * marshal.c: Iter usage.
18785
18786         * icall.c: Iter usage.
18787
18788         * object.c: Use iters.
18789
18790         * debug-helpers.c: More iters
18791
18792 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18793
18794         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
18795         under win32.
18796
18797 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18798
18799         * mono-debug-debugger.c: use iters
18800
18801         * class.c, class-internals.h: mono_class_setup_events is static
18802         now
18803
18804         * All callers: use iters
18805
18806 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
18809         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18810
18811 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18812
18813         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
18814
18815         * marshal.h: Add prototypes for ldfld/stfld_remote.
18816
18817         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
18818         this is called during startup.
18819         
18820 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18821
18822         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
18823         MonoThreadsSync struct private in monitor.c. Changed the way
18824         MonoThreadsSync is allocated so it's faster and there is no
18825         need to keep track of it with a finalizer and it uses less memory.
18826         This also finally allows us to allocate mono objects as ptrfree when
18827         there are no reference fields.
18828
18829 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
18830
18831         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
18832         disappearing link to the GC interface and use them to simplify
18833         the gchandles code.
18834
18835 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18836
18837         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
18838         stfld_remote which call mono_load/store_field_new. This allows methods
18839         calling ldfld/stfld wrappers to be AOTed.
18840
18841         * console-io.c: Include sys/filio.h under solaris.
18842         
18843         * console-io.c: Include curses.h if needed correctly.
18844
18845 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18846         
18847         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
18848         method->klass as well.
18849
18850         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
18851
18852         * class.c (mono_class_init): Switch on lazy initialization of 
18853         methods.
18854
18855         * class.c (mono_class_get_finalizer): Handle the case when the 
18856         finalizer is inherited.
18857
18858 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18859
18860         * console-io.c: <curses.h> is needed by term.h on solaris.
18861
18862 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
18863
18864         * icall.c, class-internals.h, monodiet.c, class.c: Remove
18865         mono_class_setup_properties where possible. Remove this ftn from
18866         the header file, and make it static.
18867
18868 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18869
18870         * loader.c: Add missing setup_... call.
18871
18872         * class.c: Add missing setup_... calls.
18873
18874         * class.c (mono_class_init): Switch on lazy initialization of 
18875         the generic vtable.
18876         
18877         * class.c (mono_class_init): Fix generics broken by the recent changes.
18878
18879         * monodiet.c (handle_type): Add missing setup_... calls.
18880
18881         * class.c: Back out garbage in previous patch.
18882         
18883         * class.c: Add missing setup_... calls.
18884
18885         * class.c (mono_class_get_method_from_name_flags): Avoid calling
18886         mono_class_setup_methods () if possible.
18887
18888         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18889
18890         * class-internals.h (MonoCachedClassInfo): New structure.
18891
18892         * class.c: Initialize properties and events fields of MonoClass lazily.
18893
18894         * class.c: Add infrastructure for lazily initializing the methods and
18895         vtable fields of MonoClass. Not yet used.
18896
18897         * class.c (mono_class_get_finalizer): New helper function.
18898
18899         * class.c: Add infrastructure for loading some class related data from
18900         an AOT file.
18901
18902         * object.c: Add infrastructure for initializing the vtable from data
18903         in the AOT file.
18904
18905         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18906
18907         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18908         appropriate initialization function before accessing parts of the
18909         MonoClass structure.
18910
18911         * marshal.c: Fix warnings.
18912         
18913         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18914
18915         * mono-debug-debugger.c (get_exception_message): Use 
18916         mono_class_get_method_from_name_flags ().
18917
18918 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18919
18920         * reflection.c, appdomain.c: Replace a few manual searches that
18921         Zoltan missed. (Paolo approved this part of my initial patch).
18922
18923 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18924
18925         * profiler.c: disable recording statistical events at report time.
18926
18927 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18928
18929         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18930         to byteswap arrays of enum values, too (bug #72080).
18931
18932 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18933
18934         * appdomain.c (set_domain_search_path): Allow this to be called if
18935         domain->setup is not yet set.
18936
18937         * loader.c (mono_method_get_index): New helper function.
18938
18939         * loader.c reflection.c: Use mono_method_get_index ().
18940
18941         * class.c (mono_class_get_method_from_name_flags): New helper method.
18942
18943         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18944         this.
18945
18946         * class.c (mono_class_get_cctor): New helper method.
18947
18948         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18949         mono_class_get_method () to look up methods.
18950
18951 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18952
18953         * console-io.c: Fix the build, this should work on Windows.
18954
18955 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18956
18957         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18958         be set to null to keep things valid
18959
18960 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18961
18962         * icall.c: added Console 2.0 icalls.
18963         * Makefile.am: added console-io.[ch]
18964         * console-io.[ch]: internal calls for Console 2.0 API.
18965
18966 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18967
18968         * class.c: make sure we consider all the interfaces
18969         when calculating max_interface_id (bug found by
18970         Jeroen Frijters running ikvm).
18971
18972 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18975         valuetype fields to null.
18976
18977         * object.c (set_value): Ditto. Fixes #71669.    
18978
18979 2005-01-31  Martin Baulig  <martin@ximian.com>
18980
18981         * metadata.c (mono_metadata_has_generic_params): New public
18982         function; checks whether something is a generic method.
18983
18984 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18985
18986         * appdomain.c: fix infinite recursion when adding assemblies.
18987
18988 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18989
18990         * object.c: Fix small typo to return all items for Environment.
18991         GetCommandLineArgs.
18992
18993 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18994
18995         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18996         reflection.c: more domain and assembly-unload related fixes
18997         and memory leaks plugs.
18998
18999 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * 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.
19002
19003 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19004
19005         * loader.c (mono_method_signature): Make this method lazy
19006         (mono_get_method_from_token): Don't computate the signature here.
19007
19008         Doing this saves quite a bit of memory. I got 90 kb on starting up
19009         monodoc. It should also save some disk reads on startup.
19010
19011         * *: MonoMethod->signature might be NULL now. You *MUST* use
19012         mono_method_signature.
19013
19014 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * object.c (mono_runtime_get_main_args): Return an array from the
19017         current domain here. Fixes #71938.
19018
19019 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19020
19021         * monitor.c: formatting changes to comply with the
19022         mono coding style and remove #ifdefs from the code.
19023
19024 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
19025
19026         * metadata.c, private.h: remove some unneeded data
19027         and use a more compact representation for table schemas.
19028
19029 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19030
19031         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
19032         to get a better distribution in hash tables.
19033         * *.c: use mono_aligned_addr_hash() where appropriate.
19034         * assembly.c: make var static.
19035
19036 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * domain-internals.h: Put MonoJitInfo on a diet.
19039
19040         * domain.c: Fix a warning.
19041
19042 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19043
19044         * gc.c: rework the gc handles code to reuse handles
19045         when freed.
19046
19047 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
19048
19049         * domain.c: fixed long standing bug in mono_string_equal() which
19050         was brought to light with the ldstr changes.
19051
19052 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19053
19054         * reflection.c: Remove warning by adding missing include for marshal.h
19055
19056 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
19057
19058         * domain.c, object.c: change the ldstr_table to hold
19059         MonoString* as keys: makes the runtime isinterned lookup
19060         faster and simplifies memory management.
19061
19062 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
19063  
19064         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
19065         possible to add imperative security checks before calling the icall.
19066         * reflection.c: Return security attributes on the original MonoMethod
19067         (and not the wrapped one). This fix permissions on icalls.
19068
19069 2005-01-25  Dick Porter  <dick@ximian.com>
19070
19071         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
19072         the check for mktime() support actually test the mktime() return
19073         value.  "Fixes" bug 71682, though the output is still different to
19074         MS.
19075
19076 2005-01-25  Martin Baulig  <martin@ximian.com>
19077
19078         * class.c (mono_class_is_assignable_from): Make this work for
19079         generic instances.
19080
19081 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
19082
19083         * marshal.c (mono_string_utf8_to_builder)
19084         (mono_string_builder_to_utf16): We might not have ownership of the
19085         string. In thise case, we need to create a new buffer.
19086
19087         * object-internals.h (mono_stringbuilder_capacity): sb->str might
19088         be null, in which case, use the default capacity.
19089
19090 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
19091
19092         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
19093         GC events to the profiler.
19094
19095 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
19096
19097         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
19098         if you don't want the GC to run.
19099
19100 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
19101
19102         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
19103         start providing a GC API and keeping different implementations in
19104         their own file.
19105         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
19106
19107 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19108
19109         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
19110         mmap rather than allocating a huge buffer.
19111         (mono_debug_close_mono_symbol_file): Free the buffer allocated
19112         above.
19113
19114 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19115
19116         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
19117         and CheckExecutionRights.
19118         * reflection.c|h: Keep the index of the declarative security to be 
19119         used, instead of the pointer, when AOT compiler is used. Also add 
19120         class initialization when requesting demands.
19121         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
19122         CheckExecutionRights. Both properties are now FALSE by default, and
19123         unmodifiable, unless the --security option is used.
19124
19125 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19126
19127         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
19128         reflection.c: properly refcount images and assemblies, many leaks fixed.
19129
19130 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19131
19132         * threadpool.c: increase the timeout for threads in the thread pool to
19133         10s.  Fixes bug #67159.
19134
19135 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
19136
19137         * class-internals.h: Sun's compiler insists on explicit
19138         signed on bit fields to handle then correctly.
19139
19140 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
19141
19142         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
19143         Make the size of the array fit only the number of invalid path
19144         chars that we have.
19145
19146         * class.c (_mono_class_get): Improve the error reporting when a
19147         class referenced is not found, to assist debugging. 
19148
19149 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
19150
19151         * threads.c: fix off-by-one error.
19152         * domain.c: free data allocated in the domain.
19153
19154 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
19155
19156         * reflection.c (mono_method_body_get_object): Fill out exception info
19157         as well.
19158
19159         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
19160         structure.
19161         
19162 2005-01-19  Martin Baulig  <martin@ximian.com>
19163
19164         * loader.c (mono_get_method_constrained): Make this work again.
19165
19166 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
19167
19168         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
19169         guint16 to match the managed side.
19170
19171         * reflection.c (mono_reflection_body_get_object): Fill out local
19172         variables array.
19173
19174         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
19175         as well.
19176
19177         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
19178         'local_var_sig_token'.
19179
19180 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
19183         System.Drawing.
19184
19185         * reflection.c (mono_method_body_get_object): Handle abstract and
19186         runtime methods.
19187
19188 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
19189
19190         * marshal.c, loader.c, class-internals.h, reflection.c:
19191         store the emthod data for a wrapper in an array instead of a list.
19192
19193 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
19194
19195         * marshal.c: change the code to allocate memory more
19196         conservatively for method wrappers.
19197
19198 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19199
19200         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
19201         fields from MonoClass to the marshal info structure where they belong.
19202
19203 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
19204
19205         * class.c, object.c, class-internals.h, marshal.c: rearrange
19206         some fields and tweak some types to lower memory usage.
19207
19208 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19209
19210         * threads.c (signal_thread_state_change): Handle the case when the
19211         target thread is the current thread.
19212
19213         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
19214
19215         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
19216         emit_ptr_to_object_conv. 
19217
19218         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
19219         marshalling. Fixes #71352.
19220
19221 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19222
19223         * metadata.h, blob.h: move table enum to blob.h so it can be included
19224         in any header.
19225         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
19226         cut the size of MonoImage/MonoDynamicImage.
19227
19228 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * profiler.c (mono_profiler_install_simple): Fix default arguments.
19231
19232 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
19233
19234         * reflection.c, reflection.h, icall.c: add a function to check
19235         if an attribute type is defined for a metadata object.
19236
19237 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
19238
19239         * object-internals.h: Added some needed fields from StringBuilder class.
19240         * marshal.c: Set the maxCapacity when creating a StringBuilder.
19241
19242 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
19245         threads before shutting down the runtime.
19246
19247         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
19248
19249 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19250
19251         * object-internal.h, threads.c: implement stacksize and 
19252         parameterized thread start functionality (requires
19253         matching corlib). Marked broken code for later removal.
19254
19255 2005-01-12  Martin Baulig  <martin@ximian.com>
19256
19257         * class-internals.h (MonoGenericClass): Moved the `initialized'
19258         flag to MonoDynamicGenericClass, removed `init_pending'.
19259         (MonoGenericInst): Added `is_reference' flag.
19260
19261 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * reflection.c (mono_image_create_pefile): Only set the pe_offset
19264         inside the MSDOS header. Fixes #71201.
19265
19266         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
19267         gc thread.
19268         (mono_domain_finalize): Ditto.
19269
19270 2005-01-12  Martin Baulig  <martin@ximian.com>
19271
19272         * class.c (mono_get_shared_generic_class): Use the cache for
19273         non-dynamic generic classes.
19274
19275         * class-internals.h (mono_class_create_generic_2): Removed
19276         function prototype, this function is now static inside class.c.
19277
19278         * class.c (mono_class_create_generic_2): Made this static, only
19279         call it from mono_class_init() and mono_class_setup_parent().
19280         (collect_implemented_interfaces_aux): Call mono_class_init() on
19281         the interfaces we collect.
19282         (mono_class_setup_vtable): Call mono_class_init (class->parent).
19283
19284 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
19287         it a real thread handle.
19288
19289         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
19290         MonoJitExceptionInfo, since each catch clause needs its own variable.
19291         
19292 2005-01-11  Dick Porter  <dick@ximian.com>
19293
19294         * image.c (mono_pe_file_open): New variant on mono_image_open()
19295         that does not set up the CLI metadata; used for FileVersionInfo so
19296         it can get the data for windows binaries too.
19297         
19298         * process.c (process_read_string_block): Don't read off the end of
19299         the StringTable block.
19300
19301         These both fix bug 70766.
19302
19303 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
19304
19305         * gc.c: set some fields to NULL at GC cleanup time.
19306         * threads.c: if we quit the main thread, call exit ().
19307
19308 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19309
19310         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
19311
19312 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
19313
19314         * threads.h, threads.c, object.c: added accessor and settor for
19315         main_thread. Handle it specially when exiting from it: wait
19316         for other foreground threads to exit.
19317
19318 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
19319
19320         * process.c, verify.c: remove some bloat.
19321
19322 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
19323
19324         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
19325         the calling convention to cdecl under win32.
19326
19327 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
19328
19329         * object.c (mono_object_get_size): New function to get the size of
19330         an object instance.
19331
19332         * profiler.c (simple_allocation): Use above.
19333
19334 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
19335
19336         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
19337         ves_icall_System_AppDomain_getRootDomain (as it's not required to
19338         get an appdomain by it's id and we can't assume the root's id is 0).
19339         * domain-internals.h: Change the function prototype to match.
19340         * icall.c: Change the icall table for AppDomain.
19341
19342 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
19343
19344         * locales.c (string_invariant_compare_char): Only compute
19345         GUnicodeTypes in the case where we need them.  Test for ordinality
19346         first and return if so.
19347
19348         From the commit:
19349
19350                 /*
19351                  * FIXME: here we must use the information from c1type and c2type
19352                  * to find out the proper collation, even on the InvariantCulture, the
19353                  * sorting is not done by computing the unicode values, but their
19354                  * actual sort order.
19355                  */
19356
19357 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19358
19359         * loader.c: for P/Invoke methods, allow the "Internal" shared
19360         library name to refer to the calling process symbol namespace.
19361
19362 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
19363
19364         * Makefile.am: Add the security manager to the build.
19365         * security-manager.c|h: New. Initialization of the security manager.
19366
19367 2005-01-07  Dick Porter  <dick@ximian.com>
19368
19369         * threads.c: 
19370         * monitor.c: Update thread state during Monitor and WaitHandle
19371         waits.  Fixes bug 71031.
19372
19373 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * reflection.c (property_encode_signature): Correctly handle when the
19376         property has no methods.
19377
19378 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
19379
19380         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
19381         
19382         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
19383         fields from mb, not rmb. Fixes #71017.
19384
19385         * marshal.c (emit_ptr_to_str_conv): Add support for 
19386         ByValTStr -> string conversion. Fixes #71015.
19387
19388         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
19389
19390         * mempool.c (mono_mempool_contains_addr): New helper function.
19391
19392 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19393
19394         * metadata.c (mono_metadata_compute_size): Fix size calculation of
19395         HasSematics encoded fields.
19396         
19397         * metadata.c (mono_type_to_unmanaged): Improve error message for 
19398         invalid string marshalling.
19399
19400         * metadata.c: Fix warnings.
19401         
19402 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19403
19404         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
19405         profiler support.
19406
19407 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19408
19409         * domain.c object.c domain-internals.h: Revert part of r38077 since the
19410         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
19411         tests.
19412
19413 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
19416         so methods containing these can be AOTed.
19417
19418 2005-01-03  Martin Baulig  <martin@ximian.com>
19419
19420         * loader.c (find_method): Removed the hack for generic instances.
19421         (method_from_memberref): If our parent is a generic instance, pass
19422         its generic type definition to find_method() and then inflate the
19423         method.
19424         (mono_get_method_constrained): Pass the generic type definition to
19425         find_method() and inflate the method later.
19426
19427         * class-internals.h (MonoStats): Added `generic_class_count'.
19428
19429         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
19430         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
19431
19432         * reflection.c (mono_custom_attrs_from_params): Don't ignore
19433         generic type definitions.
19434
19435 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19436
19437         * loader.c icall.c: Fix warnings.
19438
19439 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
19440
19441         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
19442         blittable types. Fixes #70864.
19443
19444 2004-12-29  Martin Baulig  <martin@ximian.com>
19445
19446         * icall.c
19447         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
19448
19449         * reflection.c (mono_method_get_object): Create a
19450         "System.Reflection.MonoGenericMethod" for inflated methods; don't
19451         call mono_get_inflated_method().
19452
19453         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
19454
19455 2004-12-27  Martin Baulig  <martin@ximian.com>
19456
19457         * class-internals.h (MonoMethod): Added `is_inflated' flag.
19458         (MonoMethodInflated): Added `inflated' field.
19459
19460         * class.c (mono_class_inflate_generic_method): Don't really
19461         inflate the method here; just set the `is_inflated' flag in the
19462         MonoMethod.
19463         (mono_class_get_inflated_method): Actually inflate the method here
19464         if it's not already inflated; we use the MonoMethodInflated's new
19465         `inflated' field as a cache.
19466
19467 2004-12-26  Martin Baulig  <martin@ximian.com>
19468
19469         * class.c
19470         (inflate_generic_class): Moved some code out of inflate_generic_type().
19471         (mono_class_inflate_generic_method): If we're already inflated,
19472         inflate the context and use the declaring method; ie. make sure
19473         the declaring method of an inflated method is always the generic
19474         method definition.
19475         (mono_class_create_from_typedef): Create
19476         `class->generic_container->context->gclass'.
19477
19478 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19479
19480         * metadata-internals.h, marshal.c, reflection.c: More
19481         MonoGHashTable->GHashTable.
19482
19483         * domain-internals.h, class.c: Change MonoGHashTable's into
19484         GHashTables for some cases where no gc stuff is used
19485
19486         All users: update apis
19487
19488 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
19489
19490         * metadata.c (builtin_types): Make this `const'. Makes this get
19491         put into the shareable section.
19492         (mono_metadata_init): Casts to make gcc happy.
19493
19494 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
19497
19498 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
19499
19500         * icall.c: Added an internal call to retrieve the position and length
19501         of assembly-level declarative security attributes (RequestMinimum, 
19502         RequestOptional and RequestRefuse). This is used by the Assembly class
19503         to re-create the corresponding permission sets.
19504
19505 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19506
19507         * marshal.c: fix the stelemref wrapper to be type correct
19508         (and faster).
19509
19510 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19511
19512         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
19513         to do key & 0x7fffffff. Hashtable already does this. It just
19514         results in longer code.
19515
19516 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19517
19518         * appdomain.c: Bump corlib version.
19519         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
19520         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
19521         * reflection.c|h: Add functions to get declarative security infos
19522         (blob position and length) for assemblies, classes and methods.
19523
19524 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
19525
19526         * reflection.c: sort the constant table (bug #70693).
19527
19528 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
19529
19530         * object-internals.h, threads.c, domain.c: add accessors for
19531         the MonoThread and MonoDomain tls keys.
19532
19533 2004-12-18  Martin Baulig  <martin@ximian.com>
19534
19535         * class.c (inflate_generic_type): If we're inflating a generic
19536         instance, set `ngclass->context->container = context->container';
19537         ie. the container we inflated into.
19538
19539         * metadata.c (mono_metadata_parse_generic_param): Reflect above
19540         inflate_generic_type() changes.
19541
19542 2004-12-17  Martin Baulig  <martin@ximian.com>
19543
19544         * class-internals.h
19545         (MonoGenericClass): Replaced `MonoType *generic_type' with
19546         `MonoClass *generic_class'.  Removed `dynamic_info'; if
19547         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
19548         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
19549
19550 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * exception.c (mono_exception_from_token): New helper function.
19553
19554 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19555
19556         * assembly.c (mono_assembly_load_with_partial_name): Call 
19557         mono_assembly_loaded before invoking the preload hooks. Fixes
19558         #70564.
19559
19560         * object-internals.h (MonoThread): Change culture_info and 
19561         ui_culture_info into an array.
19562
19563         * threads.c: Cache culture info objects from more than one appdomain.
19564
19565         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
19566         current UI culture.
19567
19568 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19569
19570         * threads.h threads.c appdomain.c: Clear the culture_info field of
19571         all threads during unloading if they point to an object in the dying
19572         appdomain.
19573
19574 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
19575
19576         * culture-info.h (TextInfoEntry): New struct
19577         * object-internals.h: sync with managed
19578         * locales.c: fill the `text_info_data' field
19579         * culture-info-tables.h: update
19580
19581 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19582
19583         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
19584         collector.
19585
19586 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
19587
19588         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
19589         (ves_icall_ModuleBuilder_getMethodToken): Ditto
19590
19591 2004-12-12  Martin Baulig  <martin@ximian.com>
19592
19593         * mono-debug-debugger.c (write_type): If we're an enum and the
19594         builtin types have already been initialized, call mono_class_init().
19595
19596 2004-12-11  Martin Baulig  <martin@ximian.com>
19597
19598         * metadata.c (mono_metadata_load_generic_params): Added
19599         `MonoGenericContainer *parent_container' argument; automatically
19600         compute `container->is_method'; pass the correct owner to
19601         get_constraints().      
19602
19603         * reflection.c (compare_genericparam): Sort the GenericParam table
19604         according to increasing owners. 
19605
19606 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19607
19608         * profiler.c: allow disabling the default profiler.
19609
19610 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
19611
19612         * decimal.c, icall.c: allow disabling System.Decimal support.
19613
19614 2004-12-09  Marek Safar <marek.safar@seznam.cz>
19615
19616         * reflection.c: Add support for null attribute arguments.
19617
19618 2004-12-09  Martin Baulig  <martin@ximian.com>
19619
19620         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
19621         names to get rid of compiler warnings.
19622
19623 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
19626         mono_marshal_load_type_info (). Fixes #69625.
19627         (mono_marshal_get_ptr_to_struct): Likewise.
19628
19629 2004-12-08  Martin Baulig  <martin@ximian.com>
19630
19631         * mono-debug.h: Bumped version number to 47.
19632
19633         * mono-debug-debugger.c
19634         (mono_debugger_event_handler, mono_debugger_event): Take two
19635         guint64 arguments insteed of a gpointer and a guint32.  
19636
19637 2004-12-08  Martin Baulig  <martin@ximian.com>
19638
19639         * debug-mono-symfile.h
19640         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
19641         `address' to `native_offset'.
19642
19643 2004-12-08  Martin Baulig  <martin@ximian.com>
19644
19645         * class.c (mono_class_create_from_typespec): Only inflate if we
19646         either have `context->gclass' or `context->gmethod'.
19647
19648 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19649
19650         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
19651
19652         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
19653
19654         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
19655
19656         * reflection.c (mono_assembly_get_object): Remove the workaround put
19657         in for the release.
19658         
19659         * appdomain.c: Use the corlib_internal field from MonoAssembly.
19660
19661         * appdomain.c: Bump corlib version.
19662
19663         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
19664         be visible in other appdomains.
19665
19666 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
19667
19668         * threads.c: Interlocked inc and dec for longs were messed up,
19669         use a KISS based impl for this. Fixes 70234
19670
19671 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19672
19673         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
19674
19675 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
19676
19677         * icall.c: fix to follow policy not to allow struct
19678         arguments in icalls.
19679
19680 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19681
19682         * process.c: make the patch that handles spaces in file paths work
19683         on mono/windows too.
19684
19685 2004-12-06  Martin Baulig  <martin@ximian.com>
19686
19687         * class.c (mono_class_create_generic): Call
19688         mono_class_setup_supertypes() if we're dynamic.
19689         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
19690
19691 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * object-internals.h: Add new fields to MonoThread.
19694
19695         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19696
19697         * icall.c threads-types.h threads.c: Add new icalls.
19698
19699         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
19700
19701         * object-internals.h (MonoReflectionAssembly): Sync object layout with
19702         managed side.
19703
19704         * appdomain.c: Bump corlib version.
19705
19706         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
19707         internal assemblies. Fixes #69181.
19708
19709 2004-12-05  Martin Baulig  <martin@ximian.com>
19710
19711         * class.c (mono_class_inflate_generic_signature): Make this a
19712         no-op if `context' is NULL or we don't have any type parameters;
19713         also copy `sentinelpos'.        
19714
19715 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
19716
19717         * image.c: Add unbox_wrapper_cache.
19718
19719         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
19720
19721         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
19722         function generator.
19723         
19724         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
19725         Fixes #70173.
19726
19727         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
19728         
19729 2004-12-04  Martin Baulig  <martin@ximian.com>
19730
19731         * loader.c (mono_method_get_signature_full): New public function;
19732         like mono_method_get_signature(), but with an additional
19733         `MonoGenericContext *' argument.
19734
19735         * class.c (mono_class_inflate_generic_signature): Formerly known
19736         as inflate_generic_signature(); make this public.
19737
19738 2004-12-04  Martin Baulig  <martin@ximian.com>
19739
19740         * metadata.c
19741         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
19742         instead of a `MonoGenericContainer *'.  
19743         (mono_metadata_parse_array_full): Likewise.
19744         (mono_metadata_parse_signature_full): Likewise.
19745         (mono_metadata_parse_method_signature_full): Likewise.
19746         (mono_metadata_parse_generic_inst): Likewise.
19747         (mono_metadata_parse_generic_param): Likewise.
19748         (mono_metadata_parse_mh_full): Likewise.
19749         (mono_type_create_from_typespec_full): Likewise.
19750
19751 2004-12-03  Martin Baulig  <martin@ximian.com>
19752
19753         * class-internals.h (MonoGenericContainer): Replaced the
19754         `MonoGenericContext * pointer with a `MonoGenericContext'
19755         structure and made it the first element.
19756
19757 2004-12-03  Martin Baulig  <martin@ximian.com>
19758
19759         * class.c
19760         (inflate_generic_type): Set the `context->container' when creating
19761         a new MonoGenericContext.
19762         (mono_class_inflate_generic_method): Likewise.
19763         (mono_class_create_from_typespec): Just use `context->container'
19764         to get the container.
19765
19766         * loader.c (method_from_methodspec): Set `context->parent' from
19767         `context->container' - and if that's a method container, use its
19768         parent.  Also set the `context->container' when creating a new
19769         MonoGenericContext.
19770         (mono_get_method_from_token): Use just `context->container' to get
19771         the container.
19772
19773         * metadata.c (do_mono_metadata_parse_generic_class): Also set
19774         `gclass->context->container'.
19775
19776         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
19777         the `context->container' when creating a new MonoGenericContext.
19778
19779 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
19780
19781         * reflection.c (compare_genericparam): Sort params with identical
19782         owner by their number. Fixes gen-111 on sparc.
19783
19784 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
19787         around the domain changes.
19788
19789         * appdomain.c (mono_domain_unload): Handle the case when the thread
19790         calling Unload is itself being aborted during unloading. Fixes #70022.
19791
19792         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
19793
19794         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
19795         checkpoint_func as an icall so it gets a wrapper.
19796         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
19797         in the cross-appdomain wrappers too.
19798
19799         * threads.c (mono_thread_has_appdomain_ref): Make this public.
19800
19801         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
19802
19803         * reflection.c: Fix some memory leaks.
19804         
19805 2004-12-02  Martin Baulig  <martin@ximian.com>
19806
19807         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
19808
19809         * metadata.c (generic_class_cache): New static hashtable.
19810         (mono_metadata_lookup_generic_class): New public method.
19811
19812 2004-12-02  Martin Baulig  <martin@ximian.com>
19813
19814         * class.c (mono_class_create_from_typedef): Call
19815         mono_class_setup_parent() and mono_class_create_mono_type() before
19816         parsing the interfaces.
19817
19818 2004-12-02  Martin Baulig  <martin@ximian.com>
19819
19820         * metadata.c (generic_inst_cache): New static hashtable.
19821         (mono_metadata_lookup_generic_inst): New public function.
19822         (mono_metadata_inflate_generic_inst): New public function.
19823         (mono_metadata_parse_generic_inst): New public function.
19824         (do_mono_metadata_parse_generic_class): Use the new
19825         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
19826         since this'll also use the cache.
19827
19828         * reflection.c (mono_reflection_bind_generic_method_parameters):
19829         Use mono_metadata_lookup_generic_inst() to use the new cache.
19830
19831         * class.c (inflate_mono_type): Use
19832         mono_metadata_inflate_generic_inst() to inflate a generic
19833         instance; this'll also use the new cache.
19834
19835         * loader.c (method_from_methodspec): Use
19836         mono_metadata_parse_generic_inst() and
19837         mono_metadata_inflate_generic_inst() rather than parsing it
19838         manually, so we can use the new cache.
19839
19840 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19841
19842         * threads.c (wait_for_tids): Do not incorrectly free threads when 
19843         the wait times out.
19844
19845 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19846
19847         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
19848         iter->args based on whether parameters are passed in registers (i.e.
19849         MONO_ARCH_REGPARMS is defined)
19850
19851 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
19852
19853         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
19854         the exception message. Fixes #70070.
19855         (method_from_methodspec): Fix warnings.
19856
19857 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19858
19859         * process.c: (complete_path) return the path quoted
19860
19861 2004-12-01  Martin Baulig  <martin@ximian.com>
19862
19863         * class-internals.h (MonoGenericInst): New structure.
19864         (MonoGenericClass): Replaced `type_argc', `type_argv' and
19865         `is_open' with `MonoGenericInst *inst'.
19866         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
19867         `is_open' with `MonoGenericInst *inst'.
19868
19869 2004-11-30  Martin Baulig  <martin@ximian.com>
19870
19871         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
19872
19873         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
19874         to `generic_class_cache'.
19875
19876         * metadata.c
19877         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
19878         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
19879         (mono_generic_inst_is_valuetype): Renamed to
19880         mono_generic_class_is_valuetype().
19881
19882         * class-internals.h
19883         (MonoGenericInst): Renamed to MonoGenericClass.
19884         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
19885         (MonoClass): Renamed `generic_inst' to `generic_class'.
19886         (MonoGenericContext): Renamed `ginst' to `gclass'.
19887
19888         * object-internals.h
19889         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19890
19891         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19892         mono_reflection_generic_class_initialize().
19893
19894         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19895         now known as "System.Reflection.MonoGenericClass".
19896         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19897
19898 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19899
19900         * class-internals.h: Added a flag field to MonoClass to cache the
19901         declarative security attributes actions associated with the class.
19902         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19903         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19904         applicable to the JITted method.
19905         * reflection.c|h: Added functions to extract (as flags) which security
19906         actions are available (declaratively) for a method, class or assembly.
19907         * metadata.c|h: Added functions to search the declarative security
19908         table in the metadata.
19909         
19910 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19911
19912         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19913         EXPORTEDTYPES are already in the class name cache, so there is no
19914         need to add extra code here to look at them. Just removes a bit of
19915         cruft.
19916
19917         (ves_icall_System_Environment_get_TickCount): No need for #if
19918         WINDOWS. We already have the code in io-layer.
19919
19920 2004-11-28  Martin Baulig  <martin@ximian.com>
19921
19922         * loader.c
19923         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19924         Fixes gen-112.cs.
19925
19926 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19927
19928         * assembly.c (do_mono_assembly_open): Instead of having a
19929         conditional WITH_BUNDLE, incorporate support for bundles here, by
19930         having a global `bundles' variable holding a pointer to the actual
19931         bundles. 
19932
19933         (mono_register_bundled_assemblies): New API call used by the
19934         bundle code. 
19935
19936         See mkbundle.1 for details.
19937         
19938 2004-11-27  Martin Baulig  <martin@ximian.com>
19939
19940         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19941         the vtable for generic methods.
19942
19943 2004-11-26  Martin Baulig  <martin@ximian.com>
19944
19945         * metadata.c
19946         (mono_metadata_generic_method_hash): New public function.
19947         (mono_metadata_generic_method_equal): Likewise.
19948
19949         * class-internals.h
19950         (MonoGenericContainer): Added `GHashTable *method_hash'.
19951
19952         * reflection.c (ReflectionMethodBuilder): Added
19953         `MonoGenericContainer *generic_container'.
19954         (reflection_methodbuilder_to_mono_method): Don't create a new
19955         MonoGenericContainer each time we're called.
19956         (mono_reflection_bind_generic_method_parameters): Use
19957         `container->method_hash' to cache the results so we don't create a
19958         different method if we're called several times with the same
19959         arguments.
19960
19961         * loader.c (method_from_methodspec): Use the new
19962         `container->method_hash' here, too.
19963
19964 2004-11-26  Martin Baulig  <martin@ximian.com>
19965
19966         * class.c (inflate_generic_signature): Correctly compute
19967         `res->has_type_parameters'.
19968         (mono_class_vtable): Use the `has_type_parameters' flag to
19969         determine whether we're a generic method.
19970
19971         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19972
19973 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * object.c (mono_runtime_run_main): Fix a small memory leak.
19976
19977 2004-11-25  Martin Baulig  <martin@ximian.com>
19978
19979         * class.c (set_generic_param_owner): Fixed the loop.
19980
19981 2004-11-25  Martin Baulig  <martin@ximian.com>
19982
19983         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19984         generic methods.
19985
19986 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19989         names. Fixes #69787.
19990
19991 2004-11-24  Martin Baulig  <martin@ximian.com>
19992
19993         * class.c (mono_class_create_generic_2): If we don't have a
19994         `ginst->parent', inflate `gklass->parent' to get our parent.
19995
19996 2004-11-24  Martin Baulig  <martin@ximian.com>
19997
19998         * reflection.c (compare_genericparam): Correctly sort the
19999         GenericParam table; fixes #69779.
20000
20001 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
20002
20003         * reflection.c: When writing a PE file, don't create a huge
20004         buffer in memory. Just write the arrays we have to the file.
20005         This reduces memory usage.
20006
20007         * metadata-internals.h: MonoDynamicStream pefile is no longer used
20008         globally.
20009
20010 2004-11-17  Martin Baulig  <martin@ximian.com>
20011
20012         * class.c (mono_class_init): Don't setup `class->parent' for
20013         dynamic instances; moved this to mono_class_generic_2().
20014         (mono_class_create_generic): Also set `klass->inited' for dynamic
20015         generic instances.
20016         (mono_class_create_generic_2): Don't do anything for dynamic
20017         generic instances.  Set `klass->parent' here and also call
20018         mono_class_setup_parent() here. 
20019
20020         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
20021         `MonoType *parent' argument; set `ginst->parent' before calling
20022         mono_class_create_generic_2(), so we set the correct parent.
20023
20024 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
20025
20026         * reflection.c: allow getting attributes from ModuleBuilder
20027         (used by ikvm).
20028
20029 2004-11-17  Martin Baulig  <martin@ximian.com>
20030
20031         * class.c (mono_class_create_from_typedef): If a type parameter is
20032         inherited from an outer class, set its owner to that class.
20033
20034 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
20035
20036         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
20037           for (int*) written size. This fixes bug #69592.
20038
20039 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20040
20041         * icall.c: Added IsAuthenticodePresnet internal call.
20042         * image.c|h: New function that check a MonoImage for an Authenticode
20043         signature in the certificate PE data directory.
20044         * security.c|h: New internal call to ask the runtime if an 
20045         Authenticode signature seems referenced in the PE header.
20046
20047 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
20048
20049         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
20050
20051         * reflection.c (mono_image_create_pefile): Free the assembly streams
20052         after writing out the assembly file.
20053
20054         * object.c (mono_runtime_run_main): Fix small memory leak.
20055
20056         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
20057         property access modifiers. Fixes #69389.
20058
20059 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20060
20061         * domain.c, object.c, object-internals.h, domain-internals.h,
20062         object.h, marshal.c: keep dynamic code info per domain.
20063
20064 2004-11-15  Martin Baulig  <martin@ximian.com>
20065
20066         * class.c (mono_type_get_name_recurse): Put type arguments in
20067         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
20068         see bug #68387.
20069
20070 2004-11-15  Martin Baulig  <martin@ximian.com>
20071
20072         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
20073         (mono_class_setup_vtable): When computing `the_cname' for a
20074         generic instance, don't include the namespace since we'd otherwise
20075         add it twice.
20076
20077 2004-11-15  Martin Baulig  <martin@ximian.com>
20078
20079         * class.c (mono_class_create_generic): Changed return type to void.
20080         (mono_class_create_generic_2): New public function; setup
20081         `class->method', `class->field' and `class->interfaces' here
20082         instead of in mono_class_init().
20083
20084         * class.h (mono_class_create_generic): Moved to class-internals.h.
20085
20086 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
20087
20088         * reflection.c (mono_image_create_pefile): take a file HANDLE.
20089         rather than writing to memory, write to this file. Right now,
20090         we are just writting into a buffer, and copying that. However
20091         we can avoid the buffer later.
20092
20093         (mono_dynamic_stream_reset): new function
20094
20095         * icall.c, object-internals.h: update for the above.
20096
20097 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
20098
20099         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
20100         have been using gc'd memory. First it is slower, unlikely
20101         the comment in the source code said, secondly, it increases
20102         our footprint to do it in the gc.
20103
20104         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
20105         the method so that it does not have to copy to managed code.
20106
20107 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
20110
20111 2004-11-12  Martin Baulig  <martin@localhost>
20112
20113         * reflection.c (mono_image_create_token): Allow generic method
20114         definitions here, since they may appear in an `.override'; see
20115         gen-98/gen-99 for an example.
20116
20117 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
20118
20119         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
20120         #69365.
20121
20122         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
20123         descriptive.
20124
20125 2004-11-11  Martin Baulig  <martin@ximian.com>
20126
20127         * class.c (mono_class_setup_vtable): In an explicit interface
20128         implementation, the method name now includes the arity.
20129
20130 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * object.c (mono_array_full_copy): Fix warning.
20133
20134 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
20135
20136         * appdomain.c: Removed look_for_method_by_name(). Use the new method
20137         mono_class_get_method_from_name() instead.
20138         
20139         * class-internals.h: Added two new types of wrappers. 
20140         Added MonoRemotingTarget enum. Added new trampoline function type, which
20141         takes an additional MonoRemotingTarget value as parameter, so it is
20142         possible to request a trampoline for a specific target.
20143         
20144         * class.c: Added new mono_class_get_method_from_name() method.
20145         
20146         * class.h: In MonoRemoteClass, we can have now to vtables, one for
20147         general remoting sinks and one specific for cross domain calls.
20148         
20149         * debug-helpers.c: Added new wrapper names.
20150         
20151         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
20152         of a remote class.
20153         
20154         * image.c: Porperly delete value objects form the remoting invoke hashtable.
20155         
20156         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
20157         with several other methods (mono_marshal_get_xappdomain_dispatch,
20158         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
20159         and others) can generate a fast remoting wrapper for cross domain calls.
20160         More information can be found in docs/remoting.
20161         Other changes: Removed mono_find_method_by_name, and used
20162         mono_class_get_method_from_name instead.
20163         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
20164         is stored in the remoting invoke hashtable.
20165         
20166         * marshal.h: published the new method for getting the xdomain wrapper,
20167         and also added a method for getting the adequate wrapper for a given
20168         method and target.
20169         
20170         * object-internals.h, object.c: Added a couple of methods for capying and
20171         cloning arrays.
20172         Modified mono_install_remoting_trampoline, which takes the new remoting
20173         trampoline that has a remoting target as parameter.
20174         mono_class_proxy_vtable now also takes a remoting target as parameter, and
20175         will return the most suitable vtable for the target.
20176         Added mono_remote_class_vtable, which returns the vtable of a remote class
20177         (which can be the normal remoting vtable or the xdomain vtable).
20178         
20179         * threads.c: the xdomain invoke and dispatch wrappers must also be
20180         protected against interruptions.
20181
20182 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20183
20184         * icall.c: use memmove in BlockCopyInternal when the source and
20185         destination arrays are the same.
20186
20187 2004-11-09  Martin Baulig  <martin@ximian.com>
20188
20189         * class-internals.h (MonoGenericContainer): Removed `method' and
20190         `signature', replaced them with `is_method' and `is_signature'
20191         flags.  Added `context'.
20192
20193         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
20194         instead of a `MonoGenericContainer *'.
20195
20196         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
20197         for dynamic type parameters.
20198         (mono_metadata_load_generic_params): Setup `container->context'.
20199
20200         * reflection.c (mono_reflection_setup_generic_class): Setup
20201         `tb->generic_container->context'.
20202         (do_mono_reflection_bind_generic_parameters): Use
20203         mono_class_inflate_generic_type() to correctly inflate types,
20204         rather than using our own hack just for MONO_TYPE_VAR.
20205
20206 2004-11-09  Martin Baulig  <martin@ximian.com>
20207
20208         * class.c (mono_class_inflate_generic_method): Small fix; don't
20209         crash here.
20210
20211         * icall.c
20212         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
20213         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
20214         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
20215         (ves_icall_Type_BindGenericParameters): Likewise.
20216         (ves_icall_Type_get_IsGenericInstance): Likewise.
20217         (ves_icall_Type_GetGenericParameterPosition): Likewise.
20218         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
20219         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
20220         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
20221
20222 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20223
20224         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
20225         assembly versions and public key tokens. Fixes #69113.
20226
20227 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
20228
20229         * metadata.c: fix bug introduced with the type cache changes
20230         on 2004-11-06.
20231
20232 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
20233
20234         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
20235         the MonoClass pointer instead of the token in exception clauses.
20236         * reflection.c: updates for the above and make the code not depend
20237         on the structure of MonoExceptionClause.
20238
20239 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20240
20241         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20242         Add support for dynamic assemblies. Fixes #69114.
20243
20244         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
20245
20246 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20247
20248         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
20249         since most only those methods use it. the code member of
20250         MonoMethodPInvoke was dead, so that can be removed too. Also,
20251         remove inline_count (again, not used), and move slot so that it
20252         can share bits with some other flags. This saves 8 bytes in the
20253         structure and gives us about 50 kb back for mcs helloworld.cs
20254
20255         * *.[ch]: Do naming changes for the above.
20256
20257         * loader.c (mono_method_get_header): Lazily init the header
20258         on first access.
20259         (mono_get_method_from_token): don't init the header here
20260         (mono_free_method): the header may never be allocated
20261
20262         Overall, this saves 150 kb of unmanaged allocations
20263         for mcs helloworld.cs. That accounts for 10% of the unmanaged
20264         memory at runtime.
20265         
20266         * loader.c, loader.h (mono_method_get_header): new accessor.
20267
20268         * *.[ch]: use the above method. Prepares us to lazily load
20269         the header.
20270
20271         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
20272         three warnings, which are actual bugs (see 69206).
20273
20274         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
20275         unused. Saves a cool 4 bytes / method.
20276
20277 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
20278
20279         * metadata.c (builtin_types): Add types for System.Object here.
20280         (mono_metadata_parse_type_full): Cache MonoType*'s that are
20281         for a class or valuetype from klass->this_arg or klass->byval_arg.
20282
20283         On mcs for a hello world, this gets us down from 21836 MonoType's
20284         to 14560.
20285
20286         (mono_metadata_free_type): Account for the above change.
20287
20288 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
20291         exception instead of asserting if name is null.
20292         (ves_icall_System_AppDomain_GetData): Ditto.
20293
20294 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20295
20296         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
20297         EnumBuilder.
20298
20299         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
20300         Return NULL when the domain does not have entry_assembly set.
20301
20302         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
20303         Add a 'resource_modules' argument.
20304         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
20305
20306         * reflection.c (mono_reflection_create_runtime_class): Move setting
20307         of wastypebuilder here, so mono_get_type_object () returns a MonoType
20308         for enums too.
20309
20310         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
20311         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
20312         Throw an ArgumentNullException if 'ptr' is null.
20313
20314         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
20315         assemblies here. Fixes #69020.
20316
20317 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20318
20319         * reflection.c (build_compressed_metadata): Fix the previous patch for
20320         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
20321         the stack.
20322
20323 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
20324
20325         * assembly.c (mono_assembly_names_equal): Allow a match if one of
20326         the cultures is false. Fixes #69090.
20327
20328         * reflection.c (build_compressed_metadata): Fix invalid memory read 
20329         detected by valgrind.
20330         
20331         * reflection.c (mono_reflection_get_type): Avoid triggering a 
20332         TypeResolve multiple times for the same type. Fixes #65577.
20333
20334 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
20335
20336         * marshal.c: Avoid using ldftn to call managed functions. It is
20337         much slower than just a call.
20338
20339         * reflection.c (mono_module_get_object): free the basename we
20340         allocate here from glib.
20341         
20342         * reflection.c (ensure_runtime_vtable): make sure to free
20343         overrides.  Also, we were allocating an array of MonoMethod not an
20344         array of MonoMethod*.
20345
20346         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
20347
20348         * image.c (mono_image_close): free image->guid here.
20349
20350 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20351
20352         * reflection.c: Fix some spec conformance issues with the PE file
20353         structures so mcs compiled apps run on the Net 2.0 beta.
20354
20355 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
20356
20357         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
20358         Implement this. Fixes #67264.
20359
20360         * debug-helpers.h debug-helpers.c marshal.c: Move 
20361         mono_find_method_by_name to debug-helpers.c.
20362
20363 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
20364
20365         * object.c (mono_release_type_locks): type_initialization_hash is
20366         a GHashTable.
20367
20368         * reflection.c object.c object-internals.h: Fix warnings.
20369
20370         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
20371         without accessors. Fixes #61561.
20372
20373         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
20374         application base from the root domain if not set. Fixes #65641.
20375         (mono_runtime_init): Fix warning.
20376
20377 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20378
20379         * appdomain.c: call mono_thread_pool_init.
20380         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
20381         of worker threads based on the number of CPUs and the environment
20382         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
20383         for non-windows (windows) systems.
20384
20385 2004-10-27  Chris Toshok  <toshok@ximian.com>
20386
20387         * mono-debug-debugger.c (write_class): don't call mono_class_init
20388         here, as even with the check for (!klass->init_pending), we get
20389         into a situation where we're hitting cycles in class
20390         initialization.  Fixes #68816.
20391
20392 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * image.c: Avoid overwriting values in the loaded_images_hash when an
20395         assembly is loaded multiple times. Fixes #61152.
20396
20397         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
20398         so multiple satellite assemblies for the same name can be loaded.
20399         Fixes #68259.
20400
20401         * mono_domain_assembly_preload: Actually return the loaded assembly, 
20402         not NULL.
20403
20404         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
20405         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
20406
20407         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
20408         pending finalizers are not invoked after the appdomain has been 
20409         unloaded. Fixes #67862.
20410
20411 2004-10-22  Martin Baulig  <martin@ximian.com>
20412
20413         * mono-debug-debugger.c
20414         (mono_debugger_runtime_invoke): Don't box valuetypes.
20415
20416 2004-10-22  Chris Toshok  <toshok@ximian.com>
20417
20418         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
20419         don't hide private methods.
20420
20421 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
20422
20423         * icall.c: Allows the runtime to "share" (when known) the public key
20424         token of an assembly. This avoid the need to recalculate the token 
20425         (from the public key) in managed code.
20426
20427 2004-10-21  Chris Toshok  <toshok@ximian.com>
20428
20429         * debug-helpers.c (append_class_name): argh, revert last patch.
20430         
20431 2004-10-21  Chris Toshok  <toshok@ximian.com>
20432
20433         * debug-helpers.c (append_class_name): use '+' as the delimiter,
20434         not '/', so that it matches what the debugger uses to look up
20435         methods.
20436
20437 2004-10-21  Martin Baulig  <martin@ximian.com>
20438
20439         * mono-debug-debugger.c (mono_debugger_throw_exception): New
20440         public method; this is called each time an exception is thrown and
20441         allows the debugger to use exception catch points.
20442
20443 2004-10-21  Martin Baulig  <martin@ximian.com>
20444
20445         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
20446         the stack pointer and the exception object in some struct and pass
20447         that to the debugger.
20448
20449 2004-10-21  Chris Toshok  <toshok@ximian.com>
20450
20451         * mono-debug-debugger.c (do_write_class): add instance/static
20452         event support.  We don't expose "raise" or "other" yet.
20453         (event_is_static): new method.
20454
20455 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
20456
20457         * mono-debug-debugger.c
20458         (mono_debugger_handle_exception): Remove
20459         bogus return value for fussy compilers.
20460
20461 2004-10-20  Martin Baulig  <martin@ximian.com>
20462
20463         * mono-debug-debugger.c
20464         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
20465         (mono_debugger_handled_exception): Likewise.
20466
20467 2004-10-20  Martin Baulig  <martin@ximian.com>
20468
20469         * mono-debug-debugger.h (MonoDebuggerEvent): Added
20470         MONO_DEBUGGER_EVENT_EXCEPTION.
20471
20472         * mono-debug-debugger.c (mono_debugger_handle_exception): New
20473         public function to send the debugger a notification for an
20474         exception and inform it about a catch/finally clause.
20475
20476 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
20479         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
20480         fix 2.95 build. 
20481
20482         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
20483
20484 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20485
20486         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
20487         marshalled as [In,Out]. Fixes #58325.
20488
20489 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
20490
20491         * reflection.c (mono_method_body_get_object): Implement some fields.
20492
20493 2004-10-12  Martin Baulig  <martin@ximian.com>
20494
20495         * reflection.c (mono_reflection_bind_generic_parameters): Small
20496         fix, correctly retrieve our parent from a generic instance.
20497
20498 2004-10-12  Martin Baulig  <martin@ximian.com>
20499
20500         * metadata.c (mono_metadata_generic_param_equal): We always have
20501         an owner.
20502
20503         * class.c
20504         (mono_class_from_generic_parameter): We need to have an owner.
20505         (my_mono_class_from_generic_parameter): Likewise.
20506
20507         * reflection.c (mono_reflection_setup_generic_class): Renamed to
20508         mono_reflection_create_generic_class() and added a new
20509         mono_reflection_setup_generic_class().  
20510         (mono_reflection_initialize_generic_param): If we're a nested
20511         generic type and inherited from the containing class, set our
20512         owner to the outer class.
20513
20514 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
20515
20516         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
20517
20518         * reflection.c (mono_method_body_get_object): New function to create
20519         a MethodBody object.
20520
20521         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
20522
20523 2004-10-11  Martin Baulig  <martin@ximian.com>
20524
20525         * metadata.c (_mono_metadata_type_equal): Renamed to
20526         do_mono_metadata_type_equal() and made static.
20527
20528 2004-10-11  Martin Baulig  <martin@ximian.com>
20529
20530         * appdomain.c: Bump corlib version number to 28.
20531
20532 2004-10-10  Martin Baulig  <martin@ximian.com>
20533
20534         * class-internals.h
20535         (MonoGenericInst): Added `MonoGenericContainer *container'.
20536         (MonoGenericMethod): Likewise.
20537         (MonoGenericContext): Likewise.
20538         (MonoGenericParam): Added `MonoGenericContainer *owner'.
20539
20540         * metadata.c
20541         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
20542         (do_mono_metadata_parse_generic_inst): Likewise.
20543         (mono_metadata_parse_type_full): New public method.  This is the actual
20544         mono_metadata_parse_type() implementation - with an additional
20545         `MonoGenericContainer *' argument.
20546         (mono_metadata_parse_array_full): Likewise.
20547         (mono_metadata_parse_signature_full): Likewise.
20548         (mono_metadata_parse_method_signature_full): Likewise.
20549         (mono_metadata_parse_mh_full): Likewise.
20550         (mono_type_create_from_typespec): Likewise.
20551         (mono_metadata_interfaces_from_typedef_full): New public method;
20552         this is similar to the other _full() methods, but we take a
20553         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
20554         (mono_metadata_parse_generic_param): Take an additional
20555         `MonoGenericContainer *' argument and lookup the MonoGenericParam
20556         from that container.
20557         (mono_metadata_generic_param_equal): New static method to compare
20558         two type parameters.
20559         (_mono_metadata_type_equal): New static method; takes an
20560         additional `gboolean signature_only' argument - if true, we don't
20561         compare the owners of generic parameters.
20562         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
20563         with a TRUE argument - do a signature-only comparision.
20564
20565         * loader.c: Use the new _full() methods and pass the
20566         MonoGenericContainer to them.
20567
20568         * object-internals.h (MonoReflectionTypeBuilder): Added
20569         `MonoGenericContainer *generic_container' field.
20570         (MonoReflectionMethodBuilder): Likewise.
20571
20572 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20573
20574         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
20575         case initial images of dynamic assemblies.
20576
20577         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
20578
20579         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
20580
20581         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
20582         length of event->other array.
20583         (typebuilder_setup_events): Ditto.
20584
20585         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
20586         'assembly_by_name' and add an 'assemblies' list.
20587
20588         * assembly.h assembly.c: Add a new search hook for determining whenever
20589         an assembly is already loaded. Use this instead of searching in the
20590         loaded_assemblies list.
20591
20592         * domain.c appdomain.c: Implement the new search hook so loaded 
20593         assemblies are now scoped by appdomain. Fixes #67727.
20594
20595 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
20596
20597         * threads.c (mono_thread_attach): Initialize synch_lock field so
20598         mono_thread_detach works again.
20599
20600         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
20601         'lib' too. Fixes #63130.
20602
20603 2004-10-06  Jackson Harper  <jackson@ximian.com>
20604
20605         * culture-info-tables.h: regenerated.
20606
20607 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
20608
20609         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
20610         implemented by other interfaces in the result. Fixes #65764.
20611         
20612         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20613         Handle unloadable modules without crashing.
20614
20615         * image.c (load_modules): Revert the previous patch since modules must
20616         have a fixed index inside the array.
20617         
20618         * image.c (load_modules): Don't include native modules in the modules
20619         array.
20620
20621 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * reflection.h: Add param_defaults field.
20624
20625         * reflection.c: Add support for parameter defaults in dynamic methods.
20626         Fixes #64595.
20627
20628         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
20629         an empty string when a type has no namespace. Fixes #64230.
20630
20631 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
20632
20633         * tabledefs.h: Added "internal" security actions to support non-CAS
20634         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
20635         Note: they do not seems to be used anymore in 2.0 (new metadata format)
20636
20637 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
20638
20639         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
20640         constructor of abstract class. Fixes #61689.
20641
20642 2004-10-04  Martin Baulig  <martin@ximian.com>
20643
20644         * class-internals.h (MonoGenericContainer): New type.
20645         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
20646         `MonoGenericContainer *generic_container'.
20647         (MonoClass): Replaced `gen_params' and `num_gen_params' with
20648         `MonoGenericContainer *generic_container'.
20649
20650         * metadata.c (mono_metadata_load_generic_params): Return a
20651         `MonoGenericContainer *' instead of a `MonoGenericParam *';
20652         removed the `num' argument.
20653
20654 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20655
20656         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
20657         for dynamic images.
20658
20659         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
20660         machine fields.
20661
20662         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
20663
20664         * reflection.c: Save pe_kind and machine values into the generated
20665         image file.
20666
20667         * appdomain.c: Bump corlib version number.
20668
20669         * object-internals.h: Reorganize layout of LocalBuilder.
20670
20671         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
20672         New helper function.
20673
20674         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
20675         created MonoType for dynamic types. Fixes #66180.
20676
20677 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
20678
20679         * threadpool.c: the ares hashtable needs a critical section around it.
20680         this prevents some nasty segfaults
20681
20682 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20683
20684         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
20685         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
20686         bug 67324).
20687         
20688 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20689
20690         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
20691         
20692 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20693
20694         * image.c: Always canonicalize image file names, to avoid loading
20695         the same assembly twice when referenced using a relative path.
20696
20697 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
20700
20701         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
20702
20703         * marshal.c: Fix warnings.
20704
20705 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
20706
20707         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
20708         attempting to marshal the delegate_trampoline as the method_addr.
20709         This patch has a static hashtable of marshalled delegates so that 
20710         we can map delegate_trampoline addresses back to delegates.  This
20711         allows a delegate passed to managed code to be passed back into native
20712         code.  Fixes #67039
20713
20714 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20715
20716         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
20717
20718         * reflection.c (method_encode_code): Align method headers properly.
20719         Fixes #66025.
20720
20721 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20722
20723         * marshal.c: In the runtime invoke wrapper, reset the abort
20724         exception if it is cached. This avoids the automatic rethrowal of 
20725         the exception after the catch of the wrapper. Also check for pending
20726         interruptions before calling the managed method. This is done using
20727         the new method emit_thread_force_interrupt_checkpoint, since the
20728         normal checkpoint method is ignored when running the invoke wrapper.
20729         * object.c: If the abort exception is rethrown, set the abort_exc
20730         field of the thread, so it will be rethrown aftere every catch.
20731         * threadpool.c: Only run an interruption checkpoint if what has been
20732         requested is a stop of the thread (aborts will be ignored).
20733         * threads.c: By default, a thread will now never be interrumped while
20734         running the runtime invoke wrapper (this ensures that runtime_invoke
20735         will always return to the caller if an exception pointer is provided).
20736         There is a new special method mono_thread_force_interruption_checkpoint()
20737         to force an interruption checkpoint even if running a protected
20738         wrapper, which is used by the same runtime invoke wrapper to do a check
20739         at a safe point.
20740
20741 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20742
20743         * object.c, object-internals.h: Implemented mono_release_type_locks,
20744         which releases the cctor locks held by a thread.
20745         * threads.c, threads.h: In thread_cleanup, release cctor locks held
20746         by a thread. Added mono_thread_exit() method to be used to safely stop
20747         a thread.
20748
20749 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20750
20751         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20752         Move null check before dereference.  Avoid indexing beyond the end
20753         of the 'modules' array.
20754
20755 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20756
20757         * metadata-internals.h (MonoImage): Add module_count field.
20758         * image.c (load_modules): Set image->module_count.
20759         (mono_image_load_file_for_image): Use image->module_count.
20760         * reflection.c (mono_image_load_module): Append to image->modules array 
20761         of dynamic assembly.
20762         (mono_module_get_object): Fix loop to actually increment index.
20763         Use image->module_count.
20764         * assembly.c (mono_assembly_load_references): Use image->module_count.
20765         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
20766         Likewise.
20767
20768 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20769
20770         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
20771         Avoid assert on generic types.
20772
20773 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
20774
20775         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
20776
20777         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
20778
20779         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
20780         function to convert a MarshalSpec structure to its managed counterpart.
20781
20782         * reflection.c: Fix warnings.
20783         
20784         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
20785         field.
20786
20787         * icall.c (mono_create_icall_signature): Fix build.
20788
20789 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20790
20791         * icall.c: Add MakePointType icall.
20792
20793         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
20794         warnings.
20795
20796 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20797
20798         * threadpool.c: reuse allocated slots in the queue.
20799
20800 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20801
20802         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
20803
20804         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
20805
20806         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
20807         previous change.
20808
20809         * tabledefs.h: Add constants for pinvoke attributes BestFit and
20810         ThrowOnUnmappableChar.
20811
20812         * icall.c (ves_icall_Type_GetPacking): New icall.
20813
20814 2004-09-24  Martin Baulig  <martin@ximian.com>
20815
20816         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
20817
20818 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20819
20820         * appdomain.c:
20821         (mono_domain_set): allow setting a domain that is being unloaded.
20822         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
20823         being unloaded.
20824
20825 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20826
20827         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
20828         the GetCustomAttributes icall.
20829
20830 2004-09-23  Martin Baulig  <martin@ximian.com>
20831
20832         * object-internals.h (MonoReflectionGenericParam): Replaced
20833         'has_ctor_constraint', `has_reference_type' and `has_value_type'
20834         with `guint32 attrs'.
20835
20836 2004-09-23  Martin Baulig  <martin@ximian.com>
20837
20838         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
20839
20840 2004-09-23  Martin Baulig  <martin@ximian.com>
20841
20842         * object-internals.h (GenericParameterAttributes): New enum.
20843
20844 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20845
20846         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
20847         
20848         * class.c (init_events): Fill out event->other field.
20849
20850         * class.c: Fix warnings.
20851
20852         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
20853
20854 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20855
20856         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
20857         walk which doesn't supply the IL offset.
20858
20859 2004-09-22  Martin Baulig  <martin@ximian.com>
20860
20861         * reflection.c (mono_reflection_setup_internal_class): If we're
20862         System.ValueType, System.Object or System.Enum, set
20863         `klass->instance_size' and create the vtable.
20864         (mono_reflection_create_internal_class): If we're an enum type,
20865         get the base class from our current corlib.
20866
20867 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
20868
20869         * reflection.h (MonoResolveTokenError): New type.
20870
20871         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
20872         icall.
20873
20874         * icall.c: Add an 'error' argument to the ResolveToken icalls.
20875
20876 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
20877
20878         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
20879         Support also calling constructors, but only for already allocated objects.
20880
20881 2004-09-17  Geoff Norton <gnorton@customerdna.com>
20882
20883         * reflection.c (type_get_qualified_name): If the klass is null
20884         return the typename to avoid a NullRefEx.
20885         (encode_cattr_value): Get the qualified name of the boxed type,
20886         not the underlying enumtype.  Fixes #62984.
20887
20888 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20889
20890         * marshal.c: Fix problems with previous checkin.
20891
20892 2004-09-21    <vargaz@freemail.hu>
20893
20894         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20895         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20896
20897         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20898
20899 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20900
20901         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20902         should only return a type for pointers, arrays, and passbyref types.
20903         Fixes bug #63841.
20904
20905 2004-09-21  Martin Baulig  <martin@ximian.com>
20906
20907         * domain.c (mono_debugger_check_runtime_version): New public
20908         function.
20909
20910         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20911
20912 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20913
20914         * reflection.c: Added missing sort to the declarative security 
20915         attributes table. MS implementation stops seeing the attributes if the
20916         token number regress in the table (as shown by ildasm and permview).
20917
20918 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20919
20920         * object-internals.h (MonoReflectionModule): Add 'token' field.
20921         
20922         * reflection.c (mono_reflection_get_token): Add support for Module
20923         and Assembly.
20924         (mono_module_get_object): Set 'token' field.
20925         (mono_module_file_get_object): Set 'token' field.
20926
20927         * icall.c: Add new Assembly and Module icalls.
20928
20929         * appdomain.c: Bump corlib version.
20930
20931 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20932
20933         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20934         tokens of metadata objects.
20935
20936         * reflection.h reflection.c (mono_reflection_get_token): New function
20937         to obtain the token of a metadata object.
20938
20939         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20940
20941 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20942
20943         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20944         
20945         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20946
20947 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20948
20949         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20950         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20951         AssemblyBuilder to access the permissions set in the class lib.
20952         * reflection.c: Added security attributes encoding step in 
20953         mono_image_build_metadata.
20954         * tabledefs.h: Added new security actions defined in 2.0:
20955         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20956
20957 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20958
20959         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20960         macro parameter.
20961
20962 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20963  
20964         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20965           finalized. There where random SIGSEVs at program termination, when
20966           an object being finalized was trying to do a string comparison and
20967           the current culture was already finalized.
20968  
20969 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20970
20971         * threads.c: call thread_cleanup before finishing the thread if we get
20972         there.
20973
20974 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20977         assemblies from the parent. Fixes #65665.
20978
20979 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20980
20981         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20982         modifiers.
20983
20984 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20985
20986         * reflection.h: add prototype for mono_get_dbnull_object
20987         * reflection.c: add prototypes for get_default_param_value_blobs 
20988         and mono_get_object_from_blob for fussier compilers
20989
20990 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20991  
20992         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20993         false deadlock checks in class initialization.
20994  
20995 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * image.c (mono_image_addref): Fix comment.
20998
20999         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
21000         possible.
21001
21002 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
21003
21004         * reflection.c (mono_param_get_objects): Modified to return
21005         ParameterInfo.DefaultValue object.
21006
21007         (get_default_param_value_blobs):
21008         (mono_get_object_from_blob):
21009         (mono_get_dbnull_object): New helper routines. 
21010
21011         * object.c (mono_get_constant_value_from_blob): New helper routine
21012         carved out from get_default_field_value ()
21013
21014         * object-internals.h (mono_get_constant_value_from_blob): Added
21015         function declaration.
21016
21017 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21018
21019         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
21020         referenced assemblies. Fixes #62135.
21021
21022         * exception.h exception.c (mono_get_exception_file_not_found2): New
21023         helper function.
21024
21025 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21026
21027         * class.h class.c: Add mono_type_get_underlying_type ().
21028
21029 2004-09-09  Geoff Norton <gnorton@customerndna.com>
21030
21031         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
21032         Fix GetTypes() to support dynamically created assemblies.
21033
21034 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
21035
21036         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
21037         
21038         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
21039         previous patch.
21040
21041         * reflection.h reflection.c loader.c: Allow dynamic construction of
21042         pinvoke methods. Fixes #65571.
21043         
21044         * reflection.c (mono_reflection_get_type): Revert previous change since
21045         it causes regressions.
21046
21047 2004-09-08  Martin Baulig  <martin@ximian.com>
21048
21049         * class.c (class_compute_field_layout): Don't call
21050         mono_class_layout_fields() for open generic instances.
21051
21052 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
21053         * threads.c appdomain.c: fix typo in GC macro
21054
21055 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21056
21057         * threads.c: don't call mono_thread_detach() in start_wrapper(),
21058         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
21059
21060 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
21061
21062         * image.c (mono_image_close): Applied patch from 
21063         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
21064         assembly is loaded multiple times from data.
21065         
21066         * image.c (mono_image_open): Fix warning.
21067
21068 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21069
21070         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
21071         once. Fixes #58334.
21072         
21073         * reflection.c (mono_reflection_create_runtime_class): Initialize
21074         klass->nested_classes. Fixes #61224.
21075
21076 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21077
21078         * threads.c: sched_yield() on exit, to allow threads to quit.
21079
21080 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * object.c (mono_unhandled_exception): Remove leftover debug code.
21083
21084 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
21085
21086         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
21087
21088 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * marshal.c (emit_marshal_array): Really null terminate string arrays.
21091         
21092         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
21093
21094 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * marshal.c (emit_marshal_array): Null terminate string arrays.
21097         
21098         * marshal.c (raise_auto_layout_exception): Fix warning.
21099
21100         * reflection.c (mono_param_get_objects): Initialize the default value
21101         with DBNull.Value, not null. Fixes #62123.
21102
21103 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
21104
21105         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
21106         throw an exception with a cute explanation.
21107
21108 2004-09-06  Dick Porter  <dick@ximian.com>
21109
21110         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
21111         Close the new process's thread handle, as we don't use it.  The
21112         handle stays around forever otherwise.
21113
21114 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * object.c (arith_overflow): Fix warning.
21117
21118         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
21119         calling conventions in method refs. Fixes #65352.
21120
21121         * reflection.c: Fix warnings.
21122
21123 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
21124
21125         * icall.c: Add a new icall for Array.Clear
21126
21127 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
21128
21129         * object.c: When allocating an array, we have to throw
21130         an overflow exception if any of the lengths are < 0.
21131
21132 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
21135         properly. Also move implementation of string array marshalling to 
21136         managed code. Fixes #42316.
21137
21138 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21139
21140         * assembly.c: provide more information when loading an assembly fails.
21141
21142 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21143
21144         * filewatcher.c: don't expect the development fam package to be
21145         installed.
21146
21147 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * marshal.c: Make a copy of the signature cookie since it will be
21150         freed by the caller.
21151         
21152         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
21153
21154         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
21155
21156         * metadata.c (mono_metadata_free_marshal_spec): New function to free
21157         marshal specs.
21158
21159         * marshal.c: More refactoring.
21160         
21161         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
21162         smaller functions.
21163
21164 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
21165
21166         * object.c: In mono_message_invoke, fill the output parameter array after
21167           calling the managed method (it was done before the call). This fixes
21168           bug #59299.
21169
21170 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
21173         as well.
21174
21175 2004-09-02  Martin Baulig  <martin@ximian.com>
21176
21177         * class.c (mono_class_instance_size): Don't allow generic type
21178         definitions or open generic instances.
21179         (mono_class_array_element_size): If we're a value type, call
21180         mono_class_instance_size() on the original class.
21181
21182         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
21183         handle generic instances.
21184
21185         * mono-debug-debugger.c (write_type): Handle generic instances
21186         like classes.
21187
21188 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21189
21190         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
21191         the allocation request fails. Fixes #65089.
21192
21193         * object.c (mono_runtime_free_method): Do not call mono_free_method.
21194         
21195         * object.c (mono_runtime_free_method): New function to free a dynamic
21196         method.
21197
21198         * marshal.c (mono_delegate_free_ftnptr): New function to free the
21199         delegate trampoline.
21200
21201         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
21202         with hasthis as dynamic,
21203
21204         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
21205
21206         * domain.c (mono_jit_info_table_remove): New function to remove an
21207         entry from the jit info table.
21208
21209         * class-internals.h (MonoMethod): Add 'dynamic' field.
21210
21211         * loader.c: Fix warnings.
21212
21213 2004-09-01  Martin Baulig  <martin@ximian.com>
21214
21215         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
21216         instead of mono_debugger_lock() because the latter one is a no-op
21217         unless running in the debugger.
21218
21219 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
21220
21221         * class.c (class_compute_field_layout): Classes with auto-layout or
21222         reference fields are not blittable.
21223         
21224 2004-09-01  Dick Porter  <dick@ximian.com>
21225
21226         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
21227         mono_image_get_filename() to get the assembly location.
21228
21229         * icall.c:
21230         * metadata.h: Fix compile warnings
21231
21232 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
21233
21234         * class.c (class_compute_field_layout): System.Object is blittable.
21235
21236         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
21237         as in/out. Fixes #59909.
21238
21239 2004-09-01  Martin Baulig  <martin@ximian.com>
21240
21241         * metadata.h (MONO_TYPE_ISREFERENCE): Call
21242         mono_metadata_generic_inst_is_valuetype() if we're a generic
21243         instance to check whether our underlying type is a reference type.
21244
21245 2004-09-01  Martin Baulig  <martin@ximian.com>
21246
21247         * metadata.c (mono_type_size): If we're a generic instance, call
21248         mono_class_value_size() for value types.
21249
21250 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
21251
21252         * marshal.c: Implement more custom marshalling functionality. Fixes
21253         #64915.
21254
21255 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21256
21257         * mono-debug.c, debug-mono-symfile.c: add some locking love.
21258
21259 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21260
21261         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
21262
21263         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
21264
21265         * icall.c: Fix some warnings.
21266
21267         * threads.c (abort_appdomain_thread): Fix unref errors.
21268         (mono_thread_current): Fix THREAD_DEBUG define.
21269
21270 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21271
21272         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
21273
21274         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
21275
21276 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
21277
21278         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
21279         string arrays.
21280
21281 2004-08-28  Martin Baulig  <martin@ximian.com>
21282
21283         * metadata.c
21284         (mono_metadata_generic_inst_is_valuetype): New public function.
21285
21286         * metadata.h (MONO_TYPE_ISSTRUCT): Call
21287         mono_metadata_generic_inst_is_valuetype() if we're a generic
21288         instance to check whether our underlying type is a valuetype.
21289
21290 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21291
21292         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
21293         #63768.
21294
21295 2004-08-25  Martin Baulig  <martin@ximian.com>
21296
21297         * loader.c (mono_get_method_from_token): Abstract methods can also
21298         be generic and thus have type parameters.
21299
21300         * metadata-internals.h
21301         (MonoDynamicImage): Added `GPtrArray *gen_params'.
21302
21303         * reflection.c (mono_image_get_generic_param_info): Don't create a
21304         metadata row, just add an entry to the `gen_params' array.
21305         (build_compressed_metadata): Sort the `gen_params' array and then
21306         actually create the metadata.
21307
21308 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21309
21310         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
21311
21312 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21313
21314         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
21315
21316 2004-08-24  Martin Baulig  <martin@ximian.com>
21317
21318         * class.cs (mono_class_is_subclass_of): Like an interface, a
21319         generic instance also derives from System.Object.
21320
21321 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21322
21323         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
21324         custom modifiers to be in any order. Fixes #61990.
21325
21326 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21327
21328         * object.c: Register mono_object_new_fast icall.
21329         
21330         * object.c (mono_class_get_allocation_ftn): Return to calling
21331         mono_object_new_fast, since it seems faster to compute the object 
21332         size in unmanaged code than passing it as a parameter.
21333
21334         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
21335
21336         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
21337         this function with Boehm as the oom handler, so we don't have to check
21338         the result of GC_malloc.
21339
21340         * object.c: Remove checks for oom.
21341
21342         * object.h object.c (mono_class_get_allocation_ftn): New function to
21343         return the icall which can be used to allocate an instance of a given
21344         class. 
21345
21346         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
21347
21348         * class-internals.h: Add 'enabled' field.
21349
21350 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
21351
21352         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
21353
21354 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
21355         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
21356         value 0x0010.
21357
21358 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21359
21360         * appdomain.c: use the Tls function for appdomain too,
21361         at Zoltan's request. Actually return in mono_context_get
21362
21363         * appdomain.c, profiler.c, threads.c: use __thread
21364
21365 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21366
21367         * appdomain.c threads.c: Call GC_CreateThread on windows.
21368
21369         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
21370         multiple libraries since this don't work on windows.
21371
21372 2004-08-18  Martin Baulig  <martin@ximian.com>
21373
21374         * class-internals.h
21375         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
21376         MonoMethodHeader.
21377
21378         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
21379         MonoMethodNormal since we also need it for abstract and interface
21380         methods.
21381
21382         * reflection.c
21383         (build_compressed_metadata): Sort the GenericParam table.
21384         (mono_image_create_token): Added `gboolean create_methodspec'
21385         argument; this is false when generating a MethodImpl token.
21386         (reflection_methodbuilder_to_mono_method): Abstract and interface
21387         methods may also have generic parameters.
21388
21389 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21390
21391         * appdomain.c: thread local alloc
21392
21393 2004-08-17  Martin Baulig  <martin@ximian.com>
21394
21395         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
21396
21397         * icall.c
21398         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
21399         argument.
21400
21401         * class.c (mono_type_get_full_name): New public function.
21402         (mono_type_get_name): Don't include the type arguments.
21403
21404 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21405
21406         * Makefile.am: Build static versions of libmetadata and libmonoruntime
21407         for inclusion into the mono executable.
21408
21409 2004-08-16  Martin Baulig  <martin@ximian.com>
21410
21411         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
21412         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
21413
21414 2004-08-14  Martin Baulig  <martin@ximian.com>
21415
21416         * class.c (dup_type): Also copy the `byref' field.
21417
21418 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21419
21420         * reflection.c (create_dynamic_mono_image): Revert the last change 
21421         since it breaks bootstrap.
21422
21423 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21424
21425         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
21426
21427         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
21428         not free them with g_free.
21429
21430 2004-08-11  Martin Baulig  <martin@ximian.com>
21431
21432         * reflection.c (mono_reflection_setup_internal_class): Also call
21433         mono_class_setup_mono_type() if we already have a `tb->type.type'.
21434
21435 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
21436
21437         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
21438         called during default (first) AppDomain creation. Keep track of
21439         Evidence when loading assemblies.
21440
21441 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21442
21443         * opcodes.c, opcodes.h: reduce runtime relocations.
21444
21445 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21446
21447         * culture-info.h, locales.c: fixes and chages to sue the new
21448         optimized format of the locale data.
21449         * culture-info-tables.h: regenerated.
21450
21451 2004-08-06  Geoff Norton <gnorton@customerdna.com>
21452         
21453         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
21454
21455 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
21456
21457         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
21458         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
21459         * domain-internals.h: icall declaration.
21460         * icall.c: icall registration.
21461         * object-internals.h: New fields in MonoAssembly for CAS.
21462
21463 2004-08-05  Duncan Mak  <duncan@ximian.com>
21464
21465         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21466         CEE_LDELEM_ANY.
21467
21468 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21469
21470         * reflection.c: fix to deal with object[] arrays in custom ctors
21471         (bug #62550).
21472
21473 2004-08-05  Martin Baulig  <martin@ximian.com>
21474
21475         * class.c (mono_class_array_element_size): Added support for
21476         generic instances and correctly handle "recursive" types.
21477
21478 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21479
21480         * assembly.c: Fix warnings.
21481
21482 2004-08-04  Martin Baulig  <martin@ximian.com>
21483
21484         * class.c
21485         (mono_type_get_name_recurse): Added `gboolean include_arity'
21486         argument specifying whether or not we should include the generic
21487         arity in the type name.
21488         (_mono_type_get_name): New static function.
21489         (mono_class_setup_vtable): If we're a generic instance, don't
21490         include the generic arity in the names of explicit method
21491         implementations.        
21492
21493 2004-08-03  Martin Baulig  <martin@ximian.com>
21494
21495         * class.c (mono_type_get_name_recurse): Enclose the generic type
21496         arguments in `<', '>'.
21497
21498 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21499
21500         * gc.c: make GC warning messages use the trace API, they are just
21501         noise to most of the users.
21502
21503 2004-08-03  Martin Baulig  <martin@ximian.com>
21504
21505         * debug-mono-symfile.c (read_string): Correctly read the string.
21506
21507 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
21510         
21511         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
21512         icalls.
21513         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
21514
21515 2004-07-30  Martin Baulig  <martin@ximian.com>
21516
21517         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
21518         Reflect latest symbol writer changes.   
21519
21520 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
21521
21522         * object.c: always create an object if null is passed
21523         to Invoke() where a valuetype is expected.
21524
21525 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21526
21527         * marshal.c (mono_marshal_init): make managed
21528         signatures match native ones better for 64bits.
21529
21530 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21531
21532         * appdomain.c: hack to build correctly the private bin path on windows.
21533         Fixes bug #61991.
21534
21535 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21536
21537         * assembly.c: Load mscorlib from the correct framework directory
21538           (mono/<version>/mscorlib.dll).
21539         * appdomain.h: Added prototypes for new functions.
21540         * internals.h: Added some prototypes.
21541         * domain.c: When initializing the runtime, get from the executable and
21542           the configuration files the runtime version that the app supports.
21543           Added support methods for reading app.exe.config. Added list of versions
21544           supported by the JIT. Added two new methods: mono_init_from_assembly,
21545           which initializes the runtime and determines the required version from
21546           the provided exe file, and mono_init_version, which initializes
21547           the runtime using the provided version.
21548         * icall.c: Get machine.config from version-specific directory.
21549         * reflection.c: When generating an image, embed the version number
21550           of the current runtime.
21551
21552 2004-07-28  Dick Porter  <dick@ximian.com>
21553
21554         * socket-io.c
21555         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
21556         returned sockaddr size before creating the remote address object.
21557         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
21558         61608.
21559
21560 2004-07-28  Dick Porter  <dick@ximian.com>
21561
21562         * locales.c (string_invariant_compare_char): Fix invariant char
21563         compares between upper and lower cases.  Fixes bug 61458.
21564
21565 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
21566         
21567         * marshal.c: actually cache stelem.ref wrappers.
21568         
21569 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21570
21571         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
21572         sections and remove the mono_cli_rva_map () function.
21573
21574 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21575
21576         * debug-mono-symfile.c: fix one more endianess issue, from a patch
21577         by Geoff Norton (<gnorton@customerdna.com>).
21578
21579 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21580
21581         * class.c: fix class loads for pointer types (typeof(int) !=
21582         typeof(int*)).
21583
21584 2004-07-27  Martin Baulig  <martin@ximian.com>
21585
21586         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
21587         reading the debugging information from an external ".mdb" file.
21588
21589 2004-07-24  Martin Baulig  <martin@ximian.com>
21590
21591         * reflection.c (mono_image_get_type_info): Only write a class
21592         layout entry if we actually have a size or a packing size.
21593
21594 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
21595
21596         * reflection.c (type_get_fully_qualified_name): 
21597         insert cast to get type checking of ?: with non-gcc compilers
21598
21599 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
21600
21601         * rand.c: use g_getenv for both lookups of
21602         MONO_EGD_SOCKET
21603
21604 2004-07-17  Martin Baulig  <martin@ximian.com>
21605
21606         * reflection.c (mono_reflection_bind_generic_method_parameters):
21607         Set `gmethod->reflection_info'.
21608
21609 2004-07-17  Martin Baulig  <martin@ximian.com>
21610
21611         * class.c (mono_class_create_from_typedef): Insert the newly
21612         created class into the hash table before computing the interfaces
21613         since we could be called recursively.
21614
21615 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21616
21617         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
21618         function to implement stelem.ref in managed code
21619         * class-internals.h, debug-helpers.c: a new wrapper type
21620         for the above.
21621
21622 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
21623
21624         * gc.c: allow GC handles to work even when no GC is compiled in.
21625         Fix part of bug #61134 (GetAddrOfPinnedObject).
21626
21627 2004-07-13  Peter Williams  <peter@newton.cx>
21628  
21629         * process.c (complete_path): Make sure we don't attempt to execute
21630         directories.
21631  
21632 2004-07-12  Geoff Norton <gnorton@customerdna.com>
21633
21634         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
21635           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
21636           and will add/subtract the hour if needed
21637
21638 2004-07-12  Martin Baulig  <martin@ximian.com>
21639
21640         * reflection.c (mono_field_get_object): If we have
21641         `field->generic_info', take the attributes from
21642         `field->generic_info->generic_type'.    
21643
21644 2004-07-12  Martin Baulig  <martin@ximian.com>
21645
21646         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
21647         This function must be called before initializing the runtime.
21648         (mono_debug_init_1): New function; call this after initializing
21649         the runtime, but before loading the assembly.  It tells the
21650         debugger to load corlib and the builtin types.
21651
21652         * mono-debug-debugger.c: Did some larger changes in the debugging
21653         code; support recursive class declarations, make sure we actually
21654         add all classes.
21655
21656 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21657
21658         * debug-helpers.c: undo my previous patch and fixed the real issue in
21659         ../mini/exceptions-x86.c
21660
21661 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21662
21663         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
21664         when no HOME env. variable was set and a NullRef was thrown in a .cctor
21665         called from other .cctors.
21666
21667 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
21668
21669         * loader.c: Removed the mono_loader_wine_init hack now that we are
21670         doing a managed version of Windows.Forms.
21671
21672 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21673
21674         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
21675         threadpool.c, threads.c: remove static data from rootset.
21676
21677 2004-07-09  Dick Porter  <dick@ximian.com>
21678
21679         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
21680         Don't do any more processing if the matched length was 0.  It was
21681         increasing the size of the string before.  Fixes bug 61167.
21682
21683 2004-07-09  Dick Porter  <dick@ximian.com>
21684
21685         * socket-io.h:
21686         * socket-io.c
21687         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21688         Add support for SO_PEERCRED if its available.
21689
21690 2004-07-09  Peter Bartok <pbartok@novell.com>
21691         * loader.c: winelib.exe.so error message is now only displayed if
21692         MONO_DEBUG is set. To help us avoid questions when people are trying
21693         out the new Managed.Windows.Forms.
21694
21695 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21696
21697         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
21698         for isinst and castclass wrappers.
21699
21700         * class-internals.h icall.c: Move registration and lookup of JIT icalls
21701         to libmetadata from the JIT, so they could be used by the marshalling
21702         code and the interpreter.
21703
21704         * marshal.c: Register marshalling related JIT icalls here instead of
21705         in mini.c. Use CEE_MONO_ICALL instead of the family of 
21706         CEE_MONO_PROC<x> opcodes to call marshalling functions.
21707
21708         * metadata.h: Remove unneeded marshalling conversions.
21709
21710         * opcodes.c: Update for new opcodes.
21711         
21712 2004-07-08  Martin Baulig  <martin@ximian.com>
21713
21714         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
21715         (mono_debug_get_domain_data): Make this function static.
21716
21717 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21718
21719         * gc.c, object.h: add nice GC handle API for embedders.
21720
21721 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21722
21723         * reflection.c: more changes for the new api
21724
21725         * object.c: When we reflect on a field w/ a constant value, it
21726         will not have a memory location, so we must access metadata. Also,
21727         allow easier reading of strings so that we can read them from
21728         the constant data.
21729
21730         * class.c (mono_class_layout_fields): no need for literal fields here.
21731
21732         * class-internals.h: api changes for const fields
21733
21734         * icall.c (ves_icall_get_enum_info): use new apis for const fields
21735
21736 2004-07-06  Martin Baulig  <martin@ximian.com>
21737
21738         * mono-debug.h: Increment version number to 44.
21739
21740         * mono-debug.c (mono_debug_add_wrapper): The second argument is
21741         now a gpointer, rewrote this whole method.
21742
21743         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
21744         function.  Add information about the wrapper in a new "misc table".
21745
21746         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
21747         for the new misc table.
21748
21749 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21750
21751         * metadata-internals.h image.c: Add a cache for helper signatures.
21752
21753         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
21754
21755 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21756
21757         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
21758         delegates from a delegate. Fixes #61033.
21759         
21760         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
21761         marshalling of stringbuilder arrays. Fixes #59900.
21762
21763 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21764
21765         * icall.c: Add EnumBuilder:setup_enum_type icall.
21766
21767 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21768
21769         * icall.c: Added a new icall for the property version of
21770         OffsetOfStringData.
21771
21772 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21773
21774         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
21775         it has a constant size across platforms.
21776
21777         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
21778         stack trace.
21779
21780 2004-06-29  Martin Baulig  <martin@ximian.com>
21781
21782         * mono-debug.c (mono_debug_add_method): Protect the whole function
21783         in mono_debugger_lock(), not just parts of it.
21784
21785 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21786
21787         * reflection.c: make sure padding bytes in heaps are zeroed.
21788
21789 2004-06-24  David Waite  <mass@akuma.org>
21790
21791         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
21792         image.c, loader.c, locales.c, marshal.c, metadata.c,
21793         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
21794         string-icalls.c, threads.c: change to C90-style comments from C99 /
21795         C++ -style
21796
21797 2004-06-24  Dick Porter  <dick@ximian.com>
21798
21799         * threads.c
21800         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
21801         return createdNew.  Fixes bug 60412.
21802
21803         * threads-types.h: 
21804         * icall.c: Add createdNew parameter to CreateMutex icall
21805
21806 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21807
21808         * reflection.c, object-internals.h: save default value in params.
21809
21810 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21811
21812         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
21813         no need to build a new path combining that with the application base.
21814         Fixes bug #60442.
21815
21816 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21817
21818         * reflection.c: fixed minor standard compliance issues.
21819
21820 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21821
21822         * reflection.c: fixed issue with encoding some custom attributes
21823         (arrays in properties and fields, bug #60411).
21824
21825 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21826
21827         * reflection.c: fix start address when copying the public key token.
21828
21829 2004-06-23  Martin Baulig  <martin@ximian.com>
21830
21831         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
21832         the `exc' object in a static object to put it into the GC's root set.
21833
21834 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21835
21836         * reflection.c: make mono_reflection_setup_internal_class ()
21837         callable a second time to setup a new parent class.
21838
21839 2004-06-23  Dick Porter  <dick@ximian.com>
21840
21841         * threads.c: Check for WAIT_IO_COMPLETION return values.
21842
21843 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
21844
21845         * appdomain.c: Removed the g_free on the public key token. Now copy 
21846         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
21847         * assembly.c: Added public key token string value when loading 
21848         assemblies. Fix bug #60439.
21849         * icall.c: Added missing informations (like public key) in 
21850         GetReferencedAssemblies. Fix #60519.
21851         * image.h: Changed definition for public key token from const char*
21852         public_tok_value to guchar public_key_token [17];
21853         * reflection.c: Updated for changes to public key token.
21854
21855 2004-06-22  Lluis Sanchez Gual
21856
21857         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
21858         for the field in base classes.
21859
21860 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21861
21862         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
21863         mark headers as not supported, they are installed only for use by the
21864         debugger.
21865
21866 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
21867
21868         * *.c, *.h: avoid namespace pollution in public headers.
21869
21870 2004-06-21  Martin Baulig  <martin@ximian.com>
21871
21872         * exception.c (mono_get_exception_security): It's in
21873         "System.Security", not in "System".
21874
21875         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
21876         the exception classes.
21877
21878 2004-06-21  Martin Baulig  <martin@ximian.com>
21879
21880         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
21881         Protect the exception object from being finalized.
21882
21883 2004-06-21  Martin Baulig  <martin@ximian.com>
21884
21885         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
21886         public function.
21887
21888 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21889
21890         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21891         if it was not loaded before. Fix parts of #60439.
21892
21893 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21894
21895         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21896         code that was broken since Ben's change: wrappers are now
21897         dependent on the method signature only again.
21898
21899 2004-06-21  Martin Baulig  <martin@ximian.com>
21900
21901         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21902         added interface support.
21903
21904 2004-06-21  Martin Baulig  <martin@ximian.com>
21905
21906         * class.c (mono_vtable_get_static_field_data): New public method.
21907
21908 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21909
21910         * filewatcher.c : Windows build fix to be compliant with API changes.
21911
21912 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21913
21914         * class.h, class.c: more accessors.
21915         * metadata.h, metadata.c: prepare for hiding MonoType and
21916         MonoMethodSignature: people should use the accessors from now on
21917         outside of the tree.
21918
21919 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21920
21921         * *.c, *.h: more API cleanups.
21922
21923 2004-06-18  Jackson Harper  <jackson@ximian.com>
21924
21925         * assembly.c: Trace loading assemblies.
21926         * loader.c: Trace loading native libraries.
21927         * mono-config.c: Trace loading config files.
21928         
21929 2004-06-18  Dick Porter  <dick@ximian.com>
21930
21931         * locales.c: Tell ICU the lengths of strings, it can cope with
21932         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21933
21934 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21935
21936         * image.c: swapped name/filename;
21937
21938 2004-06-18  Martin Baulig  <martin@ximian.com>
21939
21940         * mono-debug-debugger.c (write_class): Write the parent class at
21941         the end of the header.
21942
21943 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21944
21945         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21946
21947 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21948
21949         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21950         (bundle_obj): New conditional define.
21951         (BUILT_SOURCES): Remove.
21952         ($(bundle_srcs)): Make parallel-make safe.
21953         (libmonoruntime_la_LIBADD): Make unconditional.
21954         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21955         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21956
21957 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21958
21959         * culture-info-tables.h: It was inconsistent with the latest
21960           supp info files.
21961
21962 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21963
21964         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21965         be loaded.
21966
21967         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21968         with gcc 2.95.
21969
21970 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21971
21972         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21973         cleaned up public header threads.h.
21974
21975 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21976
21977         * Makefile.am, *.c, *.h: more API cleanups.
21978
21979 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21980
21981         * Makefile.am: removed monosn from compilation.
21982         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21983         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21984         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21985         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21986         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21987         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21988
21989 2004-06-15  Jackson Harper  <jackson@ximian.com>
21990
21991         * assembly.c: Make locales lower case when searching the GAC for
21992         assemblies. gacutil will always make locales lowercase when
21993         installing so this effectively makes them case insensitive.
21994         
21995 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21996
21997         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21998         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21999           parameter which allows to choose whether the wait can be interrupted or 
22000           not. Also added the method mono_monitor_enter(), which locks the monitor
22001           using an infinite wait and without allowing interruption.
22002           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
22003           interrupted.
22004         * object.h: Added new fields in MonoThread. suspend_event holds the event
22005           used to susped/resume the thread. synch_lock is the lock object to use for
22006           modifying the thread state.
22007         * threads.c: Use the new synch_lock object for locking, instead of "this",
22008           which can generate deadlocks.
22009           Moved thread state change in Thread.Sleep and Thread.Join from managed
22010           to unmanaged code. This avoids a deadlock when the thread was suspended
22011           just after acquiring the thread lock.
22012           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
22013           Implemented Thread.Suspend using an event instead of ThreadSuspend,
22014           which is not fully implemented in the io-layer.
22015         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
22016
22017 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
22018
22019         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
22020         threads-types.h: more API cleanups.
22021
22022 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22023
22024         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
22025         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
22026         threadpool.c, threads.c: first pass at the exported API cleanup.
22027
22028 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22029
22030         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
22031
22032 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22033
22034         * icall.c: added internalGetHome.
22035
22036 2004-06-14  Dick Porter  <dick@ximian.com>
22037
22038         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
22039         possible to return successfully when '.' or '..' were the only
22040         entries in a directory, but were skipped.  The MonoIOStat was not
22041         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
22042         Fixes bug 59574.
22043
22044 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22045
22046         * reflection.c: make binaries run on .Net 1.1 by default.
22047
22048 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22049
22050         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
22051
22052 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
22053
22054         * marshal.c: keep track of struct size with explicit layout
22055         (bug #59979).
22056
22057 2004-06-12  Martin Baulig  <martin@ximian.com>
22058
22059         * mono-debug-debugger.c: Comment out a debugging g_message().
22060
22061 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
22062
22063         * reflection.c, reflection.h: do not free custom attrs that are cached.
22064         * icall.c: use braces to make code clearer.
22065
22066 2004-06-11  Martin Baulig  <martin@ximian.com>
22067
22068         * class.h (MonoInflatedField): New type.
22069         (MonoClassField): Replaced `MonoType *generic_type' with
22070         `MonoInflatedField *generic_info'.
22071
22072         * icall.c
22073         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
22074
22075 2004-06-11  Martin Baulig  <martin@ximian.com>
22076
22077         * reflection.c (mono_image_create_method_token): Correctly encode
22078         varargs methods.
22079
22080 2004-06-11  Martin Baulig  <martin@ximian.com>
22081
22082         * metadata.c (mono_metadata_parse_method_signature): When parsing
22083         a MethodDef which has VarArgs, also set sentinelpos if we don't
22084         have any parameters.
22085
22086 2004-06-11  Martin Baulig  <martin@ximian.com>
22087
22088         * verify.c (mono_method_verify): In CEE_CALL, use
22089         mono_method_get_signature() to get the method's signature, unless
22090         we're a PInvoke method.
22091
22092 2004-06-10  Jackson Harper  <jackson@ximian.com>
22093
22094         * assembly.c: Use <path>/lib/mono/gac for the extra paths
22095         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
22096         logical name as the supplied path is just a prefix to the gac not
22097         the direct path to it.
22098         
22099 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
22100
22101         * reflection.c: make the token for a created method match
22102         the token of the MethodBuilder it was created from
22103         (IKVM requires this behaviour now).
22104
22105 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
22106
22107         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
22108         reflection.c, socket-io.c: leak fixes.
22109
22110 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22111
22112         * icall.c: handle sentinel pos in vararg methods in position different
22113         from 0.
22114
22115 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22116
22117         * culture-info-tables.h: freshly generated.
22118
22119 2004-06-09  Martin Baulig  <martin@ximian.com>
22120
22121         * loader.c (mono_get_method_constrained): Call `mono_class_init
22122         (constrained_class)'.   
22123
22124 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
22125
22126         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
22127         any methods. Fixes #59629.
22128
22129 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22130
22131         * culture-info-tables.h: reflecting locale-builder updates.
22132
22133 2004-06-08  Dick Porter  <dick@ximian.com>
22134
22135         * object.h:
22136         * locales.c: Fixed compile warnings, including a real bug in
22137         CompareInfo_internal_compare.
22138         
22139 2004-06-08  Dick Porter  <dick@ximian.com>
22140
22141         * locales.c
22142         (ves_icall_System_Globalization_CompareInfo_internal_index):
22143         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
22144         Double-check the resuls of usearches, because ICU currently
22145         ignores most of the collator settings here.  Fixes bug 59720.
22146         
22147 2004-06-08  Dick Porter  <dick@ximian.com>
22148
22149         * locales.c
22150         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
22151         Fix memory leak and segfault-causing typo.  No idea how this one
22152         lasted so long without being noticed.
22153
22154 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
22155
22156         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
22157         any methods. Fixes #59629.
22158
22159 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22160
22161         * assembly.c:
22162         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
22163         own the critical section before). Removed dead code (that's done
22164         in the preload hook).
22165
22166         (mono_assembly_load_with_partial_name): call the preload hook.
22167
22168 2004-06-08  Martin Baulig  <martin@ximian.com>
22169
22170         * metadata.c (mono_metadata_signature_alloc): Default
22171         `sentinelpos' to -1.
22172
22173         * reflection.c (mono_image_get_array_token): Likewise.
22174
22175 2004-06-08  Martin Baulig  <martin@ximian.com>
22176
22177         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
22178
22179         * metadata.c (mono_metadata_parse_method_signature): When parsing
22180         a MethodDef which has VarArgs, set sentinelpos.
22181
22182         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
22183         `gint16' since we're using -1 for non-varargs methods.
22184
22185         * reflection.c
22186         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
22187         (method_encode_signature): Added varargs support.
22188         (method_builder_encode_signature): Likewise.
22189         (mono_image_get_varargs_method_token): New static method.
22190         (mono_image_create_method_token): New public method; this is
22191         called via an icall instead of mono_image_create_token() when
22192         calling a varargs method.       
22193
22194 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
22195
22196         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
22197
22198 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22199
22200         * culture-info-tables.h : Reflecting the latest locale-builder that
22201           fixed empty array representation ({} to {0}).
22202
22203 2004-06-07  Jackson Harper  <jackson@ximian.com>
22204
22205         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
22206         looking up extra gac paths. This allows MONO_GAC_PATH to act
22207         exactly like a prefix.
22208         
22209 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
22210
22211         * reflection.c (mono_reflection_type_from_name): Make a copy of the
22212         type name before modifying it. Fixes #59405.
22213
22214 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
22215
22216         * culture-info.h: added fields for "all datetime patterns".
22217         * locales.c: (  ves_icall_System_Globalization_CultureInfo
22218           _construct_datetime_format ()): fill xxx_patterns fields.
22219         * object.h: added fields for "all datetime patterns" to
22220           MonoDateTimeFormatInfo.
22221         * culture-info-tables.h: reflecting locale-builder updates.
22222
22223 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
22224
22225         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
22226         the event has no add and remove methods. Fixes #59629.
22227
22228 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
22229
22230         * object.c: Fixed possible integer overflow when allocating large
22231         strings.
22232
22233 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
22234
22235         * culture-info-tables.h: reflecting locale-builder updates.
22236
22237 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
22238
22239         * culture-info-tables.h: reflecting locale-builder updates.
22240
22241 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
22242
22243         * culture-info-tables.h: reflecting locale-builder updates.
22244
22245 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
22246
22247         * threads.c: Made Thread.Sleep abortable.
22248
22249 2004-06-02  Martin Baulig  <martin@ximian.com>
22250
22251         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
22252
22253         * debug-mono-symfile.h: Bumped symbol file version number to 37.
22254
22255 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
22258
22259 2004-05-30  Jackson Harper  <jackson@ximian.com>
22260
22261         * reflection.c: Do not hardcode assembly versions or public key
22262         tokens anymore. All of this except the corlib section was dead
22263         code anyways.
22264         
22265 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22266
22267         * object.c (mono_runtime_invoke_array): Automatically create boxed
22268         objects for byref valuetypes if needed. Fixes #59300.
22269         
22270         * object.c (mono_method_return_message_restore): Handle 
22271         MONO_TYPE_OBJECT as well.
22272
22273 2004-05-28  Jackson Harper  <jackson@ximian.com>
22274
22275         * reflection.c: The modified type encoding was causing build
22276         problems. Reverted for now.
22277         
22278 2004-05-28  Jackson Harper  <jackson@ximian.com>
22279
22280         * reflection.c/h: Take an assembly ref so that we dont create
22281         fully qualified names when encoding types in the same assembly as
22282         the custom attribute being emitted.
22283         * appdomain.c: Increment version number.
22284         
22285 2004-05-26  Duncan Mak  <duncan@ximian.com>
22286
22287         * icall.c
22288         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22289         Set the full version number (major, minor, build, revision).
22290
22291 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
22292
22293         * marshal.c (emit_struct_conv): increment src/dst after blit
22294         (mono_marshal_get_managed_wrapper,
22295         mono_marshal_get_native_wrapper): make sure we have marshalling
22296         info before marshalling params (info computation affects
22297         blittable)
22298
22299         * class.c (class_compute_field_layout): correctly deal with
22300         blittable
22301         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
22302         value types (as per what windows dows by default)
22303         (mono_class_setup_mono_type): System.ValueType is blittable
22304         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
22305         blittable
22306
22307         * marshal.c (mono_marshal_load_type_info): flag types  as
22308         non-blittable if the native layout doesn't match the managed
22309         layout
22310
22311 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22312
22313         * appdomain.c: don't add stuff in the private search path that is
22314         above the application base. If application base is not set, there's
22315         no private search path.
22316
22317 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22318
22319         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
22320         byref struct arguments in native->managed marshalling.
22321
22322 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
22323
22324         * marshal.c (mono_marshal_get_runtime_invoke): correctly
22325         cache methods using signature (special case for methods
22326         that are value type or string class)
22327         
22328         * image.c (mono_image_close): clean up allocated GSList's
22329         in runtime_invoke_cache.
22330
22331 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22332
22333         * mono-config.c: set the correct path for mono_cfg_dir on windows when
22334         there's no MONO_CFG_DIR environment variable defined.
22335
22336 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22337
22338         * threads.c: windows version must be >= 0x0500 to include OpenThread.
22339
22340 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
22341
22342         * threadpool.c: Really wait for 500ms after the async call, even if the wait
22343           is interrumped.
22344         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
22345           before waiting for it, and call CloseHandle after the wait to unref it.
22346           This will make sure that handles are not disposed too early.
22347
22348 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22349
22350         * appdomain.c:
22351         * appdomain.h:
22352         * icall.c: removed
22353         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
22354         needed now.
22355
22356         * object.c: se the application_base only for the domain that runs
22357         Main. Fixes bug #59216,
22358
22359 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22360
22361         * appdomain.c:
22362         * object.c: only the domain in which Main is run have
22363         SetupInformation.ConfigurationFile set, so moved a few lines from
22364         appdomain.c to object.c.
22365
22366 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22367
22368         * appdomain.c: we tried to load [name].(dll|exe), but according
22369         to bug #57710, we must also try [culture]/[name].(dll|exe) and
22370         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
22371         There's a test case attached to bug #58922.
22372
22373 2004-05-27  Dick Porter  <dick@ximian.com>
22374
22375         * icall.c:
22376         * file-io.c: Implemented icalls for locking and unlocking regions
22377         in a file.
22378         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
22379         FALSE on error (fixes both compiler warning and real bug.)
22380
22381 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
22382
22383         * culture-info-tables.h: reflecting locale-builder updates.
22384
22385           (Added missing ChangeLog entry for 05/26)
22386
22387 2004-05-27  Jackson Harper  <jackson@ximian.com>
22388
22389         * locales.c: Fix some cut and paste errors.
22390         
22391 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22392
22393         * mono-config.c: set the correct path for config. directory on windows.
22394
22395 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22396
22397         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
22398           on win32.
22399
22400 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22401
22402         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
22403         from pinvoke functions.
22404         
22405         * marshal.c (mono_ftnptr_to_delegate): Implement this.
22406
22407 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22408
22409         * culture-info-tables.h: reflecting locale-builder updates.
22410
22411 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
22414         #59086.
22415
22416 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
22417
22418         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
22419         * icall.c: Modified icalls for RNG.
22420         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
22421         Windows (CryptoAPI).
22422
22423 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22424
22425         * locales.c: Fix build.
22426
22427 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22428
22429         * culture-info-tables.h: reflecting locale-builder updates.
22430
22431 2004-05-25  Jackson Harper  <jackson@ximian.com>
22432
22433         * locales.c: When creating the current culture use the $LANGs
22434         specific culture. So DateTimeFormat and NumberFormat entries are created.
22435         
22436 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22437
22438         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
22439         a char array as parameter.
22440
22441 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
22442
22443         * image.c: In mono_image_open(), always use an absolute path name to
22444           look for already loaded images.
22445
22446 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
22447
22448         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
22449         missing in the windows build (like older cygwin include files).
22450
22451 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
22452
22453         * icall.c: Fixed check for possible integer overflow in Buffer_
22454         BlockCopy icall. Replaced comments style // by /* */.
22455
22456 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22457
22458         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
22459         
22460         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
22461         check after MONO_VTADDR. Fixes pinvoke2.exe.
22462
22463         * marshal.h marshal.c metadata.h: Add beginnings of support for
22464         ftnptr -> delegate marshalling.
22465
22466 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22467
22468         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
22469         * threads.c: Fix warnings.
22470
22471 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22472
22473         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
22474         * icall.c: Registered icalls for Suspend and Resume.
22475         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
22476           Thread.Abort.
22477         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
22478         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
22479         * process.c: Use WaitForSingleObjectEx.
22480         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
22481           checkpoints.
22482         * threads.c, threads.h: Make use of new Ex wait methods. Improved
22483           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
22484           for Suspend and Resume. Added new mono_thread_stop, used for stoping
22485           background threads. Added basic support for Abort in Windows.
22486           Start new threads using a managed delegate invoke wrapper. This wrapper
22487           has an interruption checkpoint that is needed since an interruption
22488           can be requested before the thread leaves the unmanaged code that starts 
22489           the thread.
22490         * marshal.c: Added interruption checkpoint after every native call, and
22491           also before managed calls for wrappers called from unmanaged code to
22492           go into managed code.
22493         * object.h: Added new field in MonoThread to keep track of interruption
22494           requests.
22495
22496 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22497
22498         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
22499         calls.
22500
22501 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22502
22503         * appdomain.c:
22504         * assembly.c:
22505         * gc.c:
22506         * locales.c:
22507         * mono-config.c:
22508         * rand.c: getenv -> g_getenv (windows!)
22509
22510         * process.c: complete_path is also used on non-windows platforms.
22511
22512 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22513
22514         * icall.c: new signature for Process_Start.
22515
22516         * process.[ch]: new signature for Process_Start. If we're on windows
22517         and UseShellExecute is false, we have to search for the program by
22518         ourselves if we don't get a full path.
22519
22520 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
22523         marshalling and call CleanUpNativeData if needed. Fixes #58646.
22524
22525 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22526
22527         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
22528         Fixes bug #58373.
22529
22530 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22531
22532         * process.c: use double quotes to quote program name and arguments on
22533         windows. Fixes bug #58575.
22534
22535 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22536
22537         * file-io.c: don't return "." and ".." when using windows Find*File.
22538
22539 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
22540
22541         * marshal.c: Don't pass wrappers to message init because method 
22542         addressed used to lookup metadata. part of remoting[2|3] fix.
22543
22544 2004-05-15  Jackson Harper  <jackson@ximian.com>
22545
22546         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
22547         path is essentially the same as MONO_PATH except that it points to
22548         GACs instead of lib directories.
22549         * loader.h: The user gac is gone so we dont need function to
22550         enable/disable it.
22551         * mono-config.c: user gac option is now gone.
22552         
22553 2004-05-15  Jackson Harper  <jackson@ximian.com>
22554
22555         * culture-info.h: Make defines more consistent, add calendar data
22556         to the culture info table.
22557         * culture-info-tables.h: Add basic calendar data. Basically
22558         everyone gets default gregorian until all the data is
22559         updated.
22560         * locales.c: Use the new consistent defines. Set calendar data for
22561         culture info objects.
22562         * object.h: add a field for calendar data to CultureInfo
22563         
22564 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22565
22566         * image.c: image->runtime_invoke_cache is keyed on signatures now.
22567         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
22568         a signature.
22569         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
22570         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
22571         an extra param that is the pointer of the method to invoke. The IL for
22572         the invoke method is no longer specific to the method, but to the
22573         signature of the method. Thus, we can share the same code for multiple
22574         methods. This reduces the number of methods that have to be compiled.
22575
22576 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22577
22578         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
22579
22580         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22581
22582         * icall.c: Optimize Buffer.BlockCopy.
22583
22584 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22585
22586         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
22587         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
22588         quote). Changed them to "MMMM yyyy".
22589
22590 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
22591
22592         * rand.c
22593         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
22594
22595 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
22596
22597         * reflection.h: Updated after changes to managed structures.
22598
22599         * appdomain.c: Bump corlib version.
22600
22601 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22602
22603         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
22604         windows.
22605
22606 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22607
22608         * Makefile.am: link to ../os/libmonoos.la on windows.
22609
22610         * assembly.c:
22611                 -If MONO_DEBUG, warn about non-existing directories in
22612                 MONO_PATH.
22613                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
22614                 compile time variable.
22615                 -Removed init_default_path and call mono_set_rootdir from
22616                 libmonoos.a instead (windows only).
22617
22618         * assembly.h: declare mono_assembly_getrootdir().
22619
22620         * domain.c:
22621         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
22622
22623         * loader.c: s/getenv/g_getenv/
22624
22625 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22626
22627         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
22628
22629         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
22630
22631         * metadata.h: Add new marshalling conversions.
22632
22633         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
22634         function.
22635
22636         * reflection.c (mono_reflection_get_type): Lookup the type in all
22637         modules of a multi-module assembly. Fixes #58291.
22638
22639 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22640
22641         * threads.c: Before aborting a background, set the StopRequested
22642         state.  This avoids throwing the Abort exception.
22643         In mono_thread_manage, don't continue with the shutdown until all
22644         aborted threads have actually stopped.
22645
22646 2004-05-10  Jackson Harper  <jackson@ximian.com>
22647
22648         * locales.c: Remove the modifier from culture names.
22649         
22650 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22651
22652         * Makefile.am: monosn is not installed any more. It has been deprecated
22653         in favor of sn.
22654
22655 2004-05-07  Jackson Harper  <jackson@ximian.com>
22656
22657         * locales.c
22658         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
22659         Fix array construction, add bailout if the length is 0.
22660
22661 2004-05-07  Dick Porter  <dick@ximian.com>
22662
22663         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
22664         machine doesn't have a DNS entry.  Patch by Urs Muff
22665         (umuff@quark.com), fixes bug 57928.
22666
22667 2004-05-06  Jackson Harper  <jackson@ximian.com>
22668
22669         * reflection.c: Handle null PublicTokens properly. alloc mem for
22670         assembly names culture so we dont crash when freeing it.
22671         
22672 2004-05-06  Jackson Harper  <jackson@ximian.com>
22673
22674         * assembly.c: Check the usergac when loading with partial names.
22675         
22676 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22677
22678         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
22679         does nothing for now (not required for Linux/Windows) but the class
22680         library can call it (and a newer or modified runtime could need it).
22681         * icall.c: Registred icall.
22682
22683 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22684
22685         * loader.c: prints a message on module loading error we set MONO_DEBUG
22686         environment variable.
22687
22688 2004-05-05  Jackson Harper  <jackson@ximian.com>
22689
22690         * appdomain.c: Handle PublicKeyToken=null properly.
22691         
22692 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22693
22694         * environment.c|h: Added icall ves_icall_System_Environment_
22695         GetOSVersionString to get the current OS version as a string.
22696         * icall.c: Registred icall.
22697
22698 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
22699
22700         * object.c: in mono_object_get_virtual_method(), take into account that
22701         non-virtual methods don't have a slot in the vtable. Check needed when
22702         the object is a proxy.
22703
22704 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22705
22706         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
22707         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
22708
22709         * object.c (mono_class_compute_gc_descriptor): Fix warning.
22710
22711         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
22712         passed when a valuetype is expected.
22713
22714         * object.c (mono_unhandled_exception): Only set the exit code if the
22715         exception happens in the main thread. Fixes thread5.exe.
22716
22717         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
22718         invalid names. Fixes #58047.
22719
22720 2004-05-03  Jackson Harper  <jackson@ximian.com>
22721
22722         * assembly.c: This line was committed accidently and is unneeded.
22723         
22724 2004-05-03  Jackson Harper  <jackson@ximian.com>
22725
22726         * icall.c: Add new icall for Assembly::LoadWithPartialName
22727         * assembly.c/.h: new function that probes the GAC to load partial
22728         assembly names by Paolo Molaro.
22729         
22730 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22731
22732         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
22733         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
22734         (type_get_fully_qualified_name): Added PublicKeyToken when building a
22735         full type name.
22736
22737 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22738
22739         * appdomain.c: fixed check for 'neutral' culture and removed warning.
22740         * reflection.c: fix bug when parsing a full type name and Version is not
22741         the last thing in the string.
22742
22743 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
22744
22745         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
22746         crashes when it is freed.
22747
22748 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22749
22750         * assembly.c: print the compat warning to stderr.
22751
22752 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
22753
22754         * assembly.c (mono_assembly_load_references): Add a compatibility
22755         hack to run old applications that might be still referencing the
22756         3300-based assemblies, only do this for System.xxx.
22757
22758 2004-05-01  Jackson Harper  <jackson@ximian.com>
22759
22760         * appdomain.c: If the culture is neutral we set it to "".
22761         
22762 2004-04-29  Jackson Harper  <jackson@ximian.com>
22763
22764         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
22765
22766 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
22767  
22768         * string-icalls.c: added low overhead function for copying chars
22769         * icall.c: added needed icall for the above function
22770  
22771 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22772
22773         * icall.c: fix return value of get_global_assembly_cache.  Implemented
22774         Environment.GetLogicalDrives.
22775
22776 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
22777
22778         * rand.c: try and talk to egd or prngd
22779         for random bytes if opening devices fail.
22780
22781 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22782
22783         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
22784         alignment for the type using the native alignment of its members 
22785         instead of using klass->min_align.
22786
22787         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
22788
22789 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22790
22791         * file-io.c:
22792         * socket-io.c: added check for sys/aio.h.
22793
22794 2004-04-28  Dick Porter  <dick@ximian.com>
22795
22796         * threads.c: Don't abort a thread thats already aborting, when
22797         terminating everything.
22798
22799 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22800
22801         * icall.c: added 2 new async calls for Socket.
22802
22803         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
22804         IO on *nix systems.
22805
22806         * threadpool.c: removed unused variable.
22807
22808 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
22809
22810         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
22811
22812 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22813
22814         * locales.c: put back string_invariant_tolower () and
22815         string_invariant_toupper ().
22816
22817 2004-04-26 David Waite <mass@akuma.org>
22818
22819         * file-io.h:
22820         * socket-io.h:
22821         * threads.h:
22822         * unicode.h: remove comma from end of enumeration declarations
22823
22824 2004-04-26 David Waite <mass@akuma.org>
22825
22826         * debug-mono-symfile.h:
22827         * decimal.c:
22828         * mono_debug.h:
22829         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
22830
22831
22832 2004-04-26  Jackson Harper  <jackson@ximian.com>
22833
22834         * appdomain.c: Increment version number.
22835         
22836 2004-04-26  Jackson Harper  <jackson@ximian.com>
22837
22838         * appdomain.c: Set assembly references public token value when
22839         PublicKeyToken is specified, not the hash_value. Free public token
22840         values when free assembly name data. Previously the public key
22841         token was hex decoded, however we are using hex encoded public key
22842         tokens, so this is not neccasary.
22843         * assembly.c: Lookup assemblies in the gac if their public token
22844         value is set. Add function to allow enabling user gac
22845         lookups. Specify whether or not the assembly was loaded from the
22846         GAC. Compare full assembly names when checking the cache for
22847         assemblies (Temporarily disabled see comment in code). Remove
22848         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
22849         specifies trace-loader they get extra info to stdout on the
22850         loading of assemblies.
22851         * image.h: Add a field for an assembly references public token
22852         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
22853         whether an assembly has been loaded from the GAC.
22854         * image.c: Remove a corlib -> mscorlib name mapping.
22855         * loader.h: Add function to enable/disable the user gac.
22856         * mono-config.c: Check if the usergac is enabled in the config
22857         file.
22858         * icall.c: New icall to determine whether or not an assembly has
22859         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
22860         * tabldefs.h: Add constant for assemblyref flag that specifies a
22861         full public key is used instead of a public token.
22862         * reflection.c: Remove mscorlib -> corlib mappings. Set
22863         PublicTokenValue instead of hash value. This value is a hex
22864         string so it does not need to be expanded.
22865
22866 2004-04-26  Martin Baulig  <martin@ximian.com>
22867
22868         * mono-debug-debugger.c (mono_debugger_initialize): Set
22869         `mono_debugger_initialized' before calling mono_debug_lock().
22870
22871 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
22872
22873         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
22874           InternalToUpper/InternalToLower.
22875         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
22876           removed invariant culture shortcut.  This is now done in managed code.
22877         * locales.c: (string_invariant_toupper/tolower) removed.
22878
22879 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22880
22881         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
22882         Added Poll internal call.
22883
22884         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
22885         call for Poll. Select was too heavy for polling a single socket.
22886
22887         * threadpool.[ch]: added mono_threadpool_cleanup.
22888         * threads.c: use it. Don't use Thread_Abort on windows.
22889
22890 2004-04-23  Martin Baulig  <martin@ximian.com>
22891
22892         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22893
22894 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22895
22896         * icall.c: Registred new icalls for key pair protection and added an
22897         icall for Environment.GetFolderPath on Windows.
22898         * security.c|h: Added new icalls for key pair protection.
22899
22900 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22901
22902         * socket-io.c: don't display the non-supported family warning for known
22903         families. Now this is not displayed on windows when checking support
22904         for IPv4/IPv6.
22905
22906 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22907
22908         * class.c: don't display the layout warning for static fields.
22909
22910 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22911
22912         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22913         * locales.c, locales.h: Added new icalls for culture-specific
22914         Char.ToLower and Char.ToUpper.
22915
22916 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22917
22918         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22919         by David Waite.
22920
22921 2004-04-20  Martin Baulig  <martin@ximian.com>
22922
22923         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22924         of the type name before passing it to mono_reflection_type_from_name().
22925
22926 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22927
22928         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22929         encodings here. Fixes #56965.
22930
22931 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22932
22933         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22934         fix test on strstr result not that I can see anything that
22935         relies on the result.
22936
22937 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22938
22939         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22940         Fixes #57081.
22941
22942         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22943
22944         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22945         function to determine which marshalling to use for strings. Fixes
22946         #56965.
22947
22948         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22949
22950         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22951
22952 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22953
22954         * icall.c: #include mono-config.h
22955
22956 2004-04-15  Jackson Harper  <jackson@ximian.com>
22957
22958         * culture-info-tables.h: Fix date formats for en-US culture.
22959         
22960 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22961
22962         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22963         ThreadPool.SetMinThreads.
22964         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22965         ThreadPool.SetMinThreads.
22966
22967 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22968
22969         * mono-config.c: also load the .config file in the directory
22970         where the assembly was found.
22971
22972 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22973
22974         * assembly.c: load per-assembly config files.
22975         * icall.c: decrapified code to get the config dir and moved to
22976         mono-config.c.
22977         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22978         per-assembly config files. When doing a dll map lookup give precedence
22979         to the per-assembly data.
22980
22981 2004-04-14  Martin Baulig  <martin@ximian.com>
22982
22983         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22984         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22985         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22986
22987         * mono-debugger-debugger.c: While the debugger is locked, remember
22988         whether the symbol tables have changes and send one single
22989         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22990
22991 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22992
22993         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22994
22995         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22996         function.
22997
22998         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22999         account when marshalling string arrays. Fixes #56965.
23000
23001 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
23002
23003         * icall.c: Add new icalls mapping for security.
23004         * security.c|h: Add internal calls for WindowsIdentity,
23005         WindowsImpersonationContext and WindowsPrincipal.
23006
23007 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
23008
23009         * class.c: Added comment to ensure the System.MonoDummy class
23010         is removed when no longer necessary
23011
23012 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23013
23014         * appdomain.c: Pass arguments to the bootstraping exceptions to
23015         minimize JITed methods at boot
23016
23017         * metadata.c (mono_exception_from_name_two_strings): Allow for the
23018         second string to be null.
23019
23020         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
23021         Change the protocol to minimize the JIT methods at startup.  Now
23022         it Returns the internal codepage, if the value of "int_code_page"
23023         is 1 at entry, and we can not compute a suitable code page
23024         number, returns the code page as a string.
23025
23026 2004-04-13  Jackson Harper  <jackson@ximian.com>
23027
23028         * culture-info-tables.h: Fix number of decimal digits for all
23029         english locales.
23030
23031 2004-04-13  Jackson Harper  <jackson@ximian.com>
23032
23033         * icall.c: Clairfy out of sync error message. It is not always
23034         your corlib that is out of sync.
23035
23036 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
23037
23038         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
23039         properties when only the set accessor is overriden. Fixes #55874.
23040
23041 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
23042
23043         * assembly.c (mono_assembly_load_references): Make this thread safe.
23044         Fixes #56327.
23045
23046 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23047
23048         * monosn.c: Add missing initialization calls.
23049
23050 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
23051
23052         * locales.c:
23053         ves_icall_System_Globalization_CultureInfo_construct_number_format
23054         Fix g_assert so it compiles on fussier compilers re int/ptr
23055         mismatch
23056
23057 2004-04-08  Dick Porter  <dick@ximian.com>
23058
23059         * socket-io.h:
23060         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
23061         53992.  Also rearrange the code so that the internal calls return
23062         an error value and exceptions are thrown from managed code.
23063
23064         * icall.c: Add type info to the socket icalls.
23065
23066 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23067
23068         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
23069         owes me a beer.
23070
23071 2004-04-07  Martin Baulig  <martin@ximian.com>
23072
23073         * class.c (mono_class_from_generic_parameter): Don't default
23074         `klass->parent' to `mono_defaults.object_type'.
23075
23076 2004-04-07  Martin Baulig  <martin@ximian.com>
23077
23078         * reflection.c (mono_reflection_initialize_generic_parameter): Set
23079         `param->pklass->reflection_info'.       
23080
23081 2004-04-07  Jackson Harper  <jackson@ximian.com>
23082
23083         * culture-info-tables.h: Fix date separator symbol.
23084         
23085 2004-04-07  Martin Baulig  <martin@ximian.com>
23086
23087         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
23088         from System.Type to System.MonoType.
23089
23090 2004-04-07  Martin Baulig  <martin@ximian.com>
23091
23092         * reflection.h
23093         (MonoReflectionGenericParam): Added `has_reference_type' and
23094         `has_value_type' fields.
23095
23096         * reflection.c (mono_image_get_generic_param_info): Encode the
23097         correct flags if we have the `class' or `struct' constraint.
23098
23099 2004-04-07  Martin Baulig  <martin@ximian.com>
23100
23101         * reflection.h
23102         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
23103
23104 2004-04-07  Jackson Harper  <jackson@ximian.com>
23105
23106         * appdomain.c: Revert extra patches, just wanted to bump the
23107         version number.
23108         
23109 2004-04-07  Jackson Harper  <jackson@ximian.com>
23110
23111         * Makefile.am: Add culture-info private headers.
23112         * icall.c: Add new icalls for contructing locales.
23113         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
23114         * locales.h: Declare new culture info construction methods.
23115         * object.h: Add new fields used to avoid the CultureMap to
23116         MonoCultureInfo.
23117         * culture-info.h: Definition of structs used in the culture info
23118         tables.
23119         * culture-info-tables.h: Autogenerated tables that contain culture
23120         info data. This file was generated with the locale-builder tool.
23121         * appdomain.c: Incement corlib version number.
23122         
23123 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
23124
23125         * appdomain.c: (mono_runtime_init) move mono_thread_init
23126         to before mono_object_new calls so critical sections
23127         are initialized before use.
23128
23129 2004-04-07  Martin Baulig  <martin@ximian.com>
23130
23131         * icall.c
23132         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
23133         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
23134         (ves_icall_MonoGenericParam_initialize): Removed.
23135         (monogenericparam_icalls): Removed.
23136         (generictypeparambuilder_icalls): Added new table for
23137         System.Reflection.Emit.GenericTypeParameterBuilder.
23138
23139         * reflection.c
23140         (mono_reflection_define_generic_parameter): Removed.
23141         (mono_reflection_initialize_generic_parameter): This is now called
23142         from GenericTypeParameterBuilder's .ctor.
23143
23144 2004-04-06  Martin Baulig  <martin@ximian.com>
23145
23146         * class.c (mono_class_init): Don't inflate nested classes in a
23147         generic instance.
23148         (mono_type_get_name_recurse): Include the generic arguments for
23149         generic instances and generic type declarations.
23150         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
23151         (_mono_class_get_instantiation_name): Removed.
23152         (mono_class_create_generic): Always use `gklass->name' as our name.
23153
23154         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
23155
23156         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
23157         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
23158         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
23159         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
23160         closed generic methods here.
23161
23162         * reflection.c
23163         (mono_reflection_generic_inst_get_nested_types): Removed.
23164         (inflate_mono_method): Copy the generic parameters from the
23165         MonoMethodHeader into out MonoGenericMethod.
23166
23167 2004-04-06  Martin Baulig  <martin@ximian.com>
23168
23169         * row-indexes.h
23170         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
23171
23172         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
23173
23174         * reflection.c (build_compressed_metadata): If we have any entries
23175         in the GenericParam, MethodSpec or GenericParamConstraint tables,
23176         set the header version to 1.1.
23177
23178 2004-04-06  Martin Baulig  <martin@ximian.com>
23179
23180         * class.c (mono_class_init): If we're a generic instance,
23181         initialize our nested classes, too.
23182         (_mono_class_get_instantiation_name): Deal with the new `!%d'
23183         suffix. 
23184
23185 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23186
23187         * process.c: quote the argument passed to the shell on windows.
23188
23189 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23190
23191         * threads.c (mono_alloc_special_static_data): Allow this to be
23192         called during startup.
23193
23194 2004-04-02  Martin Baulig  <martin@ximian.com>
23195
23196         * icall.c
23197         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
23198
23199 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23200
23201         * icall.c: Fix build.
23202
23203 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
23204
23205         * Makefile.am: Added security.c|h.
23206         * icall.c: Added icall for get_UserName;
23207         * security.c: New file for security related icalls. Added function
23208         get_UserName for System.Environment (fix #56144).
23209         * security.h: New. Header file for security.c
23210
23211 2004-04-02  Dick Porter  <dick@ximian.com>
23212
23213         * icall.c: Deleted the icalls that were obsoleted some time ago
23214         by the ICU string code, and which were mixed into the icall
23215         rearranging.  Fixes bug 55969.
23216
23217         * string-icalls.h: 
23218         * string-icalls.c: Deleted the code that those icalls reference.
23219
23220 2004-04-01  Martin Baulig  <martin@ximian.com>
23221
23222         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
23223
23224         * class.c (mono_class_from_generic_parameter): Don't set 
23225         TYPE_ATTRIBUTE_INTERFACE.
23226         (my_mono_class_from_generic_parameter): Likewise.
23227
23228 2004-04-01  Martin Baulig  <martin@ximian.com>
23229
23230         * loader.c (find_method): Added an optional `MonoClass *ic'
23231         argument to search in a specific interface.
23232         (mono_get_method_constrained): New public function.
23233
23234 2004-04-01  Martin Baulig  <martin@ximian.com>
23235
23236         * reflection.c (mono_image_get_generic_field_token): Use the
23237         `handleref' cache here.
23238
23239 2004-04-01  Martin Baulig  <martin@ximian.com>
23240
23241         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
23242
23243         * reflection.c (create_generic_typespec): Use the `typespec' hash
23244         here, not the `typeref' one.    
23245
23246 2004-04-01  Martin Baulig  <martin@ximian.com>
23247
23248         * class.c (mono_class_inflate_generic_type): Moved the
23249         functionality into a new static inflate_generic_type() which
23250         returns NULL if it didn't do anything.  Only increment the
23251         `mono_stats.inflated_type_count' if we actually inflated
23252         something.
23253         (mono_class_get_full): Check the classes type to see whether we
23254         need to inflate it; also inflate MONO_TYPE_(M)VAR.
23255
23256 2004-04-01  Jackson Harper  <jackson@ximian.com>
23257
23258         * reflection.c: Set culture for assembly references.
23259         
23260 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
23261
23262         * reflection.[ch], icall.[ch], Fix support for pinning variables.
23263
23264 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23265
23266         * assembly.c:
23267         (do_mono_assembly_open): the critical section also covers
23268         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
23269
23270 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23271
23272         * threads.c:
23273         (mono_manage_threads): abort the background threads when finishing.
23274         Fixes bug #47232.
23275
23276 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23277
23278         * gc.c: only close the done_event handle if there was no timeout.
23279         C-ified comments.
23280
23281 2004-03-30  Martin Baulig  <martin@ximian.com>
23282
23283         * icall.c (icall_entries): It's called "System.Activator", not
23284         "System.Activation".    
23285
23286 2004-03-30  Martin Baulig  <martin@ximian.com>
23287
23288         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
23289         (mono_class_create_from_typespec): Likewise.
23290
23291 2004-03-30  Martin Baulig  <martin@ximian.com>
23292
23293         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
23294         `has_ctor_constraint' and `initialized'.
23295
23296 2004-03-30  Martin Baulig  <martin@ximian.com>
23297
23298         * reflection.c (encode_new_constraint): New static function to add
23299         the constructor constraint attribute to a type parameter.
23300         (encode_constraints): Call encode_new_constraint() if necessary.
23301
23302         * reflection.h
23303         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
23304
23305         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
23306         
23307 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
23308
23309         * reflection.c, icall.c: add support for pinning variables. 
23310
23311 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
23312
23313         * marshal.c (mono_marshal_get_managed_wrapper):
23314         init bool local with zero rather than null.
23315
23316 2004-03-29  Martin Baulig  <martin@ximian.com>
23317
23318         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
23319         the "official" behavior here.
23320         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
23321
23322 2004-03-29  Martin Baulig  <martin@ximian.com>
23323
23324         * icall.c: Reflect latest API changes.
23325
23326 2004-03-29  Martin Baulig  <martin@ximian.com>
23327
23328         * loader.c (mono_get_method_from_token): Also call
23329         mono_metadata_load_generic_params () for abstract and interface
23330         methods; replace the type arguments in the method signature with
23331         the ones which are loaded from the metadata.
23332
23333 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
23334
23335         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
23336         of the lock is not the current thread. MS.NET don't do it, in spite of
23337         what the documentation says. See bug #56157.
23338
23339 2004-03-28  Martin Baulig  <martin@ximian.com>
23340
23341         * class.c (mono_class_init): Don't call init_properties() and
23342         init_events() for generic instances; set `prop->parent' when
23343         inflating properties.
23344
23345         * reflection.c (mono_generic_inst_get_object): Call
23346         `mono_class_init (ginst->klass)'.
23347         (mono_type_get_object): Only create a MonoGenericInst if your
23348         generic type is a TypeBuilder.
23349         (do_mono_reflection_bind_generic_parameters): Only set
23350         `ginst->is_dynamic' if our generic type is a TypeBuilder.
23351
23352 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
23355         Fixes #56091.
23356
23357 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23358
23359         * icall.c: added Kill_internal icall.
23360         * process.[ch]: added Kill_internal icall.
23361
23362 2004-03-25  Martin Baulig  <martin@ximian.com>
23363
23364         * class.h (MonoStats): Added `generic_instance_count',
23365         `inflated_method_count', `inflated_type_count' and
23366         `generics_metadata_size'.       
23367
23368 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23369
23370         * reflection.c: no warnings now.
23371
23372 2004-03-25  Martin Baulig  <martin@ximian.com>
23373
23374         * class.c (mono_class_get_full): New public function; does a
23375         mono_class_get(), but also takes a `MonoGenericContext *'.
23376
23377         * loader.c (mono_field_from_memberref): Renamed to
23378         `field_from_memberref', made static and added `MonoGenericContext *'
23379         argument.
23380         (mono_field_from_token): Added `MonoGenericInst *' argument.
23381         (method_from_memberef): Likewise.
23382         (mono_get_method_from_token): Likewise.
23383         (mono_get_method_full): New public function; does a
23384         mono_get_method(), but also takes a `MonoGenericContext *'.
23385
23386         * verify.c (mono_method_verify): Get the method's generic context
23387         and pass it to mono_field_from_token(), mono_get_method_full() and
23388         mono_class_get_full().
23389
23390 2004-03-25  Martin Baulig  <martin@ximian.com>
23391
23392         * class.c (mono_class_inflate_generic_type): Take a
23393         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
23394         `MonoGenericMethod *'.
23395
23396 2004-03-25  Martin Baulig  <martin@ximian.com>
23397
23398         * loader.h (MonoMethodInflated): Store the MonoGenericContext
23399         instead of the MonoGenericMethod here.
23400
23401 2004-03-25  Martin Baulig  <martin@ximian.com>
23402
23403         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
23404         each time we create a new MonoGenericInst, we also create a new
23405         context which points back to us.
23406
23407         * class.c (inflate_method): Use `ginst->context' instead of
23408         creating a new context.
23409
23410         * loader.c (method_from_memberref): Use
23411         `klass->generic_inst->context' instead of creating a new context.
23412
23413 2004-03-25  Martin Baulig  <martin@ximian.com>
23414
23415         * class.h (MonoGenericContext): New struct.
23416         (MonoGenericMethod): Removed `generic_inst'.
23417
23418         * class.c (mono_class_inflate_generic_method): Take a
23419         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
23420
23421 2004-03-25  Martin Baulig  <martin@ximian.com>
23422
23423         * loader.h (MonoMethodInflated): New typedef.
23424
23425         * metadata.h (MonoMethodSignature): Removed `gen_method', make
23426         `generic_param_count' consume just 30 bits, added `is_inflated'
23427         and `has_type_parameters' flags (one bit each).
23428
23429         * class.c (mono_class_inflate_generic_method): Create a
23430         MonoMethodInflated instead of a MonoMethodNormal and set
23431         `is_inflated' in the method signature.
23432
23433         * class.h (MonoGenericMethod): Removed `generic_method'.
23434
23435 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
23436
23437         * image.c: Make sure the name of a MonoImage is always an absolute path.
23438           This fixes bug #54415.
23439
23440 2004-03-24  Martin Baulig  <martin@ximian.com>
23441
23442         * class.c (mono_class_setup_vtable): If we're a generic instance,
23443         use our generic type's vtable size.
23444
23445 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23446
23447         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
23448         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
23449         problems.
23450
23451 2004-03-23  Martin Baulig  <martin@ximian.com>
23452
23453         * class.h (MonoDynamicGenericInst): Added `int count_events' and
23454         `MonoEvent *events'.
23455
23456         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
23457         (typebuilder_icalls): Added "get_event_info"; calls
23458         mono_reflection_event_builder_get_event_info(). 
23459
23460         * reflection.c (mono_reflection_generic_inst_initialize): Added
23461         `MonoArray *events'.
23462         (mono_reflection_event_builder_get_event_info): New function.
23463
23464 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
23465
23466         * object.h: add mono_type_initialization_init
23467
23468         * object.c (mono_runtime_class_init): 
23469         implement class constructor synchronization rules
23470         to cope with threading issues.  
23471         add mono_type_initialization_init
23472
23473         * appdomain.c (mono_runtime_init): call 
23474         mono_type_initialization_init
23475
23476         * class.h: removing initializing field from MonoVTable
23477
23478 2004-03-23  Martin Baulig  <martin@ximian.com>
23479
23480         * class.c (my_mono_class_from_generic_parameter): Use
23481         `param->name' if it's not NULL. 
23482
23483 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
23484
23485         * class.c: do not insert non-virtual methods in the vtable.
23486         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
23487         that means the method is non-virtual. This never would have
23488         happened before.
23489
23490 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23491
23492         * profiler.c: Added lock for accessing coverage_hash.
23493
23494 2004-03-22  Martin Baulig  <martin@ximian.com>
23495
23496         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
23497         `method->method->signature->generic_param_count != 0' to make it
23498         work for interface methods.
23499
23500 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23501
23502         * process.c: quote the string passed to the shell using g_shell_quote.
23503
23504 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23505
23506         * threads.c:
23507         (mono_threads_manage): don't remove the finalizer thread and self
23508         from the threads hash table so that mono_thread_manage can be called
23509         more than once.
23510
23511 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23512
23513         * process.c: quote the arguments when UseShellExecute is true. Fixes
23514         bug #55790.
23515
23516 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23517
23518         * threads.c: set mono_thread_detach as a cleanup routine for every
23519         thread. This way it's always executed upon thread termination, either
23520         aborted or finished normally. No more xsp hangs!
23521
23522 2004-03-17  Martin Baulig  <martin@ximian.com>
23523
23524         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
23525         `int count_nested' and a `MonoType **nested'.
23526
23527         * reflection.c (mono_reflection_bind_generic_parameters): Moved
23528         most of the functionality into a new static
23529         do_mono_reflection_bind_generic_parameters() and don't take a
23530         `MonoType *nested_in' argument any more.  Don't compute nested
23531         types here.
23532         (mono_reflection_generic_inst_get_nested_types): New public method
23533         to get nested types.
23534
23535         * class.c (mono_class_create_generic): Set `klass->nested_in' if
23536         we're a nested class.
23537
23538         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
23539         mono_reflection_generic_inst_get_nested_types() to compute the
23540         nested types.
23541
23542 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23543
23544         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
23545         descriptive error message under windows.
23546         
23547 2004-03-17  Martin Baulig  <martin@ximian.com>
23548
23549         * class.c (dup_type): Added `const MonoType *original' argument;
23550         copy the attrs from the original type.
23551
23552 2004-03-17  Martin Baulig  <martin@ximian.com>
23553
23554         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
23555         `m->generic_inst_cache' here.
23556
23557 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23558
23559         * exception.h exception.c: Add stack_overflow_exception.
23560
23561 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23562
23563         * threadpool.c:
23564         (overlapped_callback): call SetEvent *after* invoking the callback.
23565         No need to call CloseHandle.
23566
23567 2004-03-16  Martin Baulig  <martin@ximian.com>
23568
23569         * reflection.c (mono_image_get_fieldref_token): Take a
23570         `MonoReflectionField *' instead of a `MonoClassField *' and a
23571         `MonoClass *'; store the `MonoReflectionField *' in the hash.
23572
23573 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23574
23575         * appdomain.c: don't add the culture to the filename we're looking for
23576         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
23577
23578 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23579
23580         * locales.c: don't ignore symbols when doing case insensitive compares.
23581         Thanks Dick! Fixes bug #54046.
23582
23583         * threads.c: surround 'threads' usage with enter/leave in
23584         mono_thread_manage.
23585
23586 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23587
23588         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
23589         implicitly marshalled as [Out]. Fixes #55450.
23590
23591         (mono_marshal_get_runtime_invoke): Zero out the result if there is
23592         an exception.
23593
23594 2004-03-16  Martin Baulig  <martin@ximian.com>
23595
23596         * class.c (mono_class_from_generic_parameter): Use the actual
23597         parameter name. 
23598
23599 2004-03-16  Martin Baulig  <martin@ximian.com>
23600
23601         * reflection.c (type_get_signature_size): New static function.
23602         Compues the size of the type in a method signature.
23603         (method_get_signature_size): New static function; calls
23604         type_get_signature_size() to compute the actual size of the
23605         method's signature.
23606         (method_encode_signature): Use method_get_signature_size() to get
23607         the signature's size rather than using `nparams * 10'.
23608
23609 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23610
23611         * file-io.h: define here WapiOverlapped on windows. I don't want the
23612         regular OVERLAPPED one.
23613
23614         * file-io.c:
23615         * threadpool.c: somehow, BindIoCompletionCallback is not found.
23616         Disabling AIO on windows.
23617
23618 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23619
23620         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
23621         bug #55385.
23622
23623 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23624
23625         * appdomain.c: upgraded corlib version.
23626
23627         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
23628         and BeginWrite. Allow opening files for asynchrnous operations.
23629
23630         * file-io.h: new struct that maps FileStreamAsyncResult.
23631         * icall.c: added new icalls.
23632         * process.[ch]: support setting child process environment variables
23633         and use the SHELL or COMSPEC when UseShellExecute is true.
23634
23635         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
23636         callback for async. IO is here and also BindHandle.
23637
23638         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
23639         from here.
23640
23641 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23642
23643         * reflection.c (create_custom_attr): Allow len == 0.
23644
23645         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
23646         computation on big-endian machines.
23647
23648 2004-03-13  Martin Baulig  <martin@ximian.com>
23649
23650         * class.h (MonoGenericInst): Added `int count_ifaces'.
23651
23652         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
23653         `ginst->count_ifaces' instead `klass->interface_count' since we
23654         may get called before the vtable is created.
23655
23656         * loader.c (mono_method_get_param_names): If we're a generic
23657         instance, return and don't initialize the class.
23658
23659         * reflection.c (mono_reflection_setup_generic_class): Don't call
23660         ensure_runtime_vtable().
23661         (mono_reflection_bind_generic_parameters): Set
23662         `ginst->count_ifaces'.
23663
23664 2004-03-11  Jackson Harper <jackson@ximian.com>
23665
23666         * icall.c:
23667         * unicode.c:
23668         * unicode.h: Remove unused System.Char icalls.
23669         
23670 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
23671
23672         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
23673         code when we P/Invoke the first library in Windows.Forms, instead
23674         of when we first open the assembly.
23675
23676         * assembly.c: Drop the lookup from here.
23677
23678 2004-03-10  Martin Baulig  <martin@ximian.com>
23679
23680         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
23681         class for properties, fields and events.  Finally fixes #54945.
23682
23683 2004-03-10  Martin Baulig  <martin@ximian.com>
23684
23685         * metadata.c (mono_metadata_class_equal): New static function;
23686         checks whether two generic instances or two generic parameters are
23687         equal.
23688         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
23689         compare classes.        
23690
23691 2004-03-10  Martin Baulig  <martin@ximian.com>
23692
23693         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
23694
23695         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
23696         argument and write it into the `reflection_info' field.
23697
23698         * icall.c
23699         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
23700         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
23701
23702 2004-03-09  Jackson Harper  <jackson@ximian.com>
23703
23704         * char-conversions.h: use 8 bits for numeric data its all we need
23705         * icall.c: numeric data is only 8 bits now.
23706
23707 2004-03-09  Martin Baulig  <martin@ximian.com>
23708
23709         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
23710
23711         * class.c (init_properties, init_events): Initialize the new
23712         `parent' field.
23713
23714         * reflection.c (typebuilder_setup_properties): Likewise.
23715         (typebuilder_setup_events): Likewise.
23716
23717         * reflection.h (MonoEventInfo): Replaced `parent with
23718         `declaring_type' and `reflected_type'.
23719
23720         * icall.c (ves_icall_get_property_info): Distinguish between
23721         declaring and reflected type.
23722         (ves_icall_get_event_info): Likewise.
23723
23724 2004-03-09  Martin Baulig  <martin@ximian.com>
23725
23726         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
23727         (ves_icall_Type_GetField): Correctly set field->klass.
23728
23729 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23730
23731         * loader.h: Fix warning.
23732
23733 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
23734
23735         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
23736         library routine if present.  Notice that it will still continue
23737         executing even if its missing, for those working on the Gtk#
23738         edition of Windows.Forms.
23739
23740         * assembly.c (do_mono_assembly_open): If loading the
23741         System.Windows.Forms call mono_loader_wini_init.
23742
23743 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23744
23745         * class.h: Added MonoRemoteClass struct.
23746         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
23747         function for MonoStrings.
23748         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
23749         Added internal call for getting the proxy type.
23750         * marshal.c: Get the type of transparent proxies from its remote_class.
23751         Added methods that generate the IL for type checks and casts:
23752         mono_marshal_get_isinst, mono_marshal_get_castclass, 
23753         mono_marshal_get_proxy_cancast.
23754         * marshal.h: Declaration of the previous new methods.
23755         * object.c: Added new moethods for creating and updating MonoRemoteClass
23756         instances: mono_remote_class, mono_upgrade_remote_class, 
23757         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
23758         * verify.c: FIx transparent_proxy_fields layout.
23759         * appdomain.c: Bump corlib version.
23760
23761 2004-03-04  Jackson Harper  <jackson@ximian.com>
23762
23763         * icall.c: Add icall to access char conversion tables.
23764         * char-conversions.h: Character conversion tables.
23765         * Makefile.am: Add char-conversions.h private header file.
23766         
23767 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
23768
23769         * appdomain.c (unload_thread_main): Increase unloading timeout to
23770         10 sec as a temporary workaround for Nant problems.
23771
23772 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * gc.c: Add checks for GC_enable and GC_disable.
23775
23776         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
23777         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
23778         (bug #54988).
23779         
23780 2004-02-27  Martin Baulig  <martin@ximian.com>
23781
23782         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23783         `MonoReflectionType *' instead of a `MonoType *'.
23784
23785 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23786
23787         * gc.c (run_finalize): Avoid finalizing the object representing the
23788         finalizer thread.
23789         (finalizer_thread): Fix warning.
23790
23791 2004-02-25  Martin Baulig  <martin@ximian.com>
23792
23793         * class.c (_mono_class_get_instantiation_name): Added `int offset'
23794         argument for nested types.
23795         (mono_class_create_generic): Added support for nested generictypes.
23796
23797         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
23798         `GList *nested'.
23799
23800         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
23801
23802         * reflection.c (method_encode_signature): Increase the minimum
23803         value of `size' from 10 to 11.
23804         (mono_reflection_bind_generic_parameters): Take `int type_argc'
23805         and `MonoType **types' arguments instead of the `MonoArray
23806         *types'; added `MonoType *nested_in'.  Recursively instantiate
23807         nested classes. 
23808
23809 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23810
23811         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
23812         stack_overflow_ex members which are used by exception handling.
23813
23814         * appdomain.c (mono_runtime_init): Initialize the new members.
23815
23816         * gc.c (mono_gc_enable): New helper function.
23817         * gc.c (mono_gc_disable): New helper function.
23818
23819 2004-02-23  Martin Baulig  <martin@ximian.com>
23820
23821         * icall.c: I must have been really stupid - make it actually work
23822         this time ;-)
23823
23824 2004-02-23  Martin Baulig  <martin@ximian.com>
23825
23826         * loader.c (method_from_memberref): Only inflate the method if
23827         it's in another klass.
23828
23829 2004-02-23  Martin Baulig  <martin@ximian.com>
23830
23831         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
23832         (mono_class_init): If we're a generic instance and an interface,
23833         compute `class->interface_id'; also create `class->interfaces'
23834         here and inflate them.
23835
23836         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
23837         `ginst->is_open'.
23838         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
23839
23840         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
23841
23842 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
23843
23844         * reflection.c (method_encode_code): Improved the error message
23845         generated by the exception.
23846
23847 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23848
23849         * icall.c: Martin did not do what he said in the ChangeLog for
23850         2004-02-18, but put back the changes for properties and events.
23851         Commenting those changes out again and adding comment to bug #54518.
23852         
23853         * process.c: removed warning.
23854
23855 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
23856
23857         * marshal.c (emit_struct_conv): Print an error message instead of
23858         asserting when a type does not have the StructLayout attribute.
23859
23860 2004-02-20  Martin Baulig  <martin@ximian.com>
23861
23862         * reflection.c (mono_type_get_object): Also use the cache for
23863         generic instances.
23864         (mono_reflection_bind_generic_parameters): Always compute
23865         `ginst->ifaces'.        
23866
23867 2004-02-20  Martin Baulig  <martin@ximian.com>
23868
23869         * class.h (MonoGenericMethod): Removed `klass'.
23870
23871         * class.c (mono_class_inflate_generic_method): Added `MonoClass
23872         *klass' argument.
23873
23874 2004-02-20  Martin Baulig  <martin@ximian.com>
23875
23876         * reflection.c (method_encode_methodspec): Actually use the
23877         uninflated signature for the memberref.
23878
23879 2004-02-20  Martin Baulig  <martin@ximian.com>
23880
23881         * class.h (MonoGenericMethod): Removed `declaring'.
23882
23883         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
23884         is NULL, compute it here.
23885
23886 2004-02-20  Martin Baulig  <martin@ximian.com>
23887
23888         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23889
23890         * metadata.c (mono_metadata_generic_inst_hash): New method.
23891         (mono_metadata_generic_inst_equal): New method.
23892
23893         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23894         `klass->image->generic_inst_cache' cache to avoid creating
23895         duplicate MonoGenericInst's.
23896
23897         * class.c (mono_class_inflate_generic_type): Use the cache.
23898
23899 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23900
23901         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23902
23903 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23904
23905         * icall.c: added Socket.WSAIoctl icall.
23906
23907         * socket-io.[ch]: implemented
23908         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23909
23910 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23911
23912         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23913
23914 2004-02-18  Urs C Muff  <umuff@quark.com>
23915
23916         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23917         this work on PPC and other big-endian architectures.
23918
23919         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23920         fields with an underscore to make sure they're only accessed by
23921         the read32() macro.
23922
23923 2004-02-18  Martin Baulig  <martin@ximian.com>
23924
23925         * icall.c: Put the klass->refclass changes back for methods and
23926         fields, but not for properties and events.  We're currently not
23927         distinguishing between DeclaringType and ReflectedType for
23928         properties and events, that's what caused the regressions.
23929
23930 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23931
23932         * object.c:
23933         (mono_async_result_new): the handle can be NULL.
23934
23935         * threadpool.c: Use an event instead of a semaphore, don't initialize
23936         it until needed. This saves quite a few semaphores from being created
23937         when using the threadpool.
23938
23939 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23940
23941         * object.c (mono_string_is_interned_lookup): Fix interning of long
23942         strings. Fixes #54473.
23943
23944         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23945
23946         * icall.c: Revert the klass->refclass changes since they introduce
23947         regressions (bug #54518).
23948
23949 2004-02-18  Martin Baulig  <martin@ximian.com>
23950
23951         * class.c (mono_class_init): If we're a generic instance and don't
23952         come from a TypeBuilder, inflate our members here.
23953         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23954         (mono_class_create_generic): New public method.
23955         (mono_class_initialize_generic): Removed.
23956         (get_instantiation_name): Renamed to
23957         _mono_class_get_instantiation_name() and made it public.
23958
23959 2004-02-18  Martin Baulig  <martin@ximian.com>
23960
23961         * class.c (mono_class_inflate_generic_type): Clear the new
23962         instance's `nginst->klass' when inflating a generic instance.
23963         (mono_class_is_subclass_of): Added (basic) support for generic
23964         instances.
23965
23966 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23967
23968         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23969         MonoMempool to hold compiled native code.
23970
23971 2004-02-17  Martin Baulig  <martin@ximian.com>
23972
23973         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23974         `properties'.
23975
23976         * reflection.c (mono_reflection_generic_inst_initialize): Added
23977         `MonoArray *properties' argument.
23978
23979         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23980
23981 2004-02-17  Martin Baulig  <martin@ximian.com>
23982
23983         * icall.c (ves_icall_Type_GetFields): Renamed to
23984         ves_icall_Type_GetFields_internal() and added a
23985         `MonoReflectionType *rtype' argument; pass it to
23986         mono_field_get_object() to set the field's "reflected" type.
23987         (ves_icall_Type_GetConstructors): Likewise.
23988         (ves_icall_Type_GetEvents): Likewise.
23989         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23990         argument; pass it to mono_method_get_object() to set the method's
23991         "reflected" type.       
23992
23993 2004-02-17  Martin Baulig  <martin@ximian.com>
23994
23995         * class.h (MonoDynamicGenericInst): New type.
23996         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23997
23998         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23999         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
24000         (ves_icall_MonoGenericInst_GetFields): New interncall.
24001
24002         * class.c (mono_class_from_generic): Don't call
24003         mono_class_initialize_generic() if this is a dynamic instance;
24004         ie. it's being created from a TypeBuilder.
24005         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
24006         `class->byval_arg.type'.
24007
24008         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
24009         to `inflate_method' and made static.
24010         (mono_reflection_inflate_field): Removed.
24011         (mono_reflection_generic_inst_initialize): New public method.
24012
24013         * reflection.h (MonoReflectionGenericInst): Removed `methods',
24014         `ctors' and `fields'; added `initialized'.
24015
24016 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
24017
24018         * debug-helpers.c (mono_method_full_name): Fix output for empty
24019         namespaces.
24020
24021 2004-02-12  Martin Baulig  <martin@ximian.com>
24022
24023         * class.h (MonoClassField): Added `MonoType *generic_type'.
24024
24025         * reflection.c (mono_image_get_fieldref_token): Added support for
24026         instantiated generic types.
24027         (field_encode_inflated_field): Removed.
24028         (mono_image_get_inflated_field_token): Removed.
24029         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
24030
24031         * reflection.h (MonoReflectionInflatedField): Removed.
24032
24033 2004-02-12  Martin Baulig  <martin@ximian.com>
24034
24035         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
24036         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
24037
24038         * reflection.c (mono_image_get_methodspec_token): Take a
24039         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
24040         (mono_image_create_token): Check whether we have a
24041         `method->signature->gen_method' and call
24042         mono_image_get_methodspec_token() if appropriate.
24043         (inflated_method_get_object): Removed.
24044         (mono_reflection_bind_generic_method_parameters): Return a
24045         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
24046         (mono_reflection_inflate_method_or_ctor): Likewise.
24047
24048         * reflection.h (MonoReflectionInflatedMethod): Removed.
24049
24050 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
24051
24052         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
24053         for custom valuetype marshalling.
24054
24055         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
24056
24057 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24058
24059         * icall.c: fixed WSAGetLastError_internal name.
24060
24061 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
24062
24063         * threads.c (mono_thread_attach): Allow this to be called multiple
24064         times for a thread.
24065         
24066         * threads.c (build_wait_tids): Do not wait for ourselves.
24067
24068         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
24069         appdomain list is empty.
24070
24071         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
24072         memory returned by mono_string_builder_to_utf16, since it points into
24073         managed memory. Thanks to Bernie Solomon for noticing this.
24074
24075         * icall.c: Add AppDomainSetup icalls.
24076
24077         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
24078
24079         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
24080         types.
24081
24082         * reflection.c (reflection_methodbuilder_to_mono_method): Save
24083         custom attributes to the method_aux struct. Also fix array indexes etc.
24084
24085         * loader.c (mono_method_get_param_names): Make dynamic case work again.
24086         
24087 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
24088
24089         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
24090         (both static and runtime) and reduce startup time.
24091
24092 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24093
24094         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
24095         AsAny marshalling conversion instead of crashing.
24096
24097         * marshal.c: Fix warnings.
24098
24099 2004-02-09  Martin Baulig  <martin@ximian.com>
24100
24101         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
24102
24103         * reflection.h (MonoReflectionInflatedMethod): Removed the
24104         `declaring' field, it's now in the unmanaged MonoGenericMethod.
24105
24106         * reflection.c (method_encode_methodspec): Removed the `method'
24107         argument; we get it from `gmethod->declaring'.
24108         (inflated_method_get_object): Removed the `declaring' argument.
24109
24110 2004-02-09  Martin Baulig  <martin@ximian.com>
24111
24112         * class.h (MonoGenericMethod): New type.
24113         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
24114         `generic_method'.
24115
24116         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
24117         a `MonoGenericMethod *gen_method' one.
24118
24119         * class.c (mono_class_inflate_generic_type): Take an additional
24120         `MonoGenericMethod * argument.  This is only non-NULL if we're
24121         inflating types for a generic method.   
24122         (mono_class_inflate_generic_signature): Renamed to
24123         inflate_generic_signature() and made static; take a
24124         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
24125         (inflate_generic_header): Take a `MonoGenericMethod *' argument
24126         instead of a `MonoGenericInst *' one.
24127         (mono_class_inflate_generic_method): Likewise.
24128
24129         * reflection.c (encode_generic_method_sig): Take a
24130         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
24131         (method_encode_methodspec): Likewise.
24132         (inflated_method_get_object): Likewise. 
24133
24134         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
24135         field with a `MonoGenericMethod *gmethod' one.  
24136
24137 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
24138
24139         * class.h (mono_class_has_parent): add parens to expansion
24140         so you can ! this.
24141
24142 2004-02-08  Martin Baulig  <martin@ximian.com>
24143
24144         * image.h (MonoImage): Removed `generics_cache'.
24145
24146         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
24147         instead of a `MonoType *' argument; removed the `inflate_methods'
24148         argument.  Don't inflate methods here.
24149
24150         * loader.c (find_method): If it's a generic instance, call
24151         mono_class_init() on the `sclass->generic_inst->generic_type'.
24152
24153         * metadata.c (mono_type_size): Make this work on uninitialized
24154         generic instances; call it on the `ginst->generic_type's class.
24155
24156         * reflection.c (mono_reflection_bind_generic_parameters): Call
24157         mono_class_from_generic() to create the `ginst->klass'.
24158
24159 2004-02-08  Martin Baulig  <martin@ximian.com>
24160
24161         * class.h (MonoClass): Changed type of `generic_inst' from
24162         `MonoType *' to `MonoGenericInst *'.
24163
24164 2004-02-08  Martin Baulig  <martin@ximian.com>
24165
24166         * icall.c (ves_icall_Type_BindGenericParameters): Just call
24167         mono_type_get_object(), this is now creating a `MonoGenericInst'
24168         for MONO_TYPE_GENERICINST.
24169         (ves_icall_MonoGenericInst_GetParentType): Likewise.
24170         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
24171
24172         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
24173         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
24174         (inflated_method_get_object): Added `MonoClass *refclass' argument.
24175         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
24176         and reflected type.
24177
24178         * reflection.h (MonoReflectionInflatedMethod): Removed
24179         `declaring_type' and `reflected_type'.
24180
24181 2004-02-08  Martin Baulig  <martin@ximian.com>
24182
24183         * class.h (MonoGenericInst): Added `MonoType *parent' and
24184         `MonoType **ifaces'.
24185
24186         * reflection.h (MonoReflectionGenericInst): Removed `klass',
24187         `parent' and `interfaces'.
24188
24189         * reflection.c (mono_reflection_bind_generic_parameters): Take a
24190         `MonoType *' argument and return a `MonoType *'.
24191
24192         * icall.c
24193         (ves_icall_MonoGenericInst_GetParentType): New interncall.
24194         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
24195
24196 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
24197
24198         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
24199         valuetype marshalling.
24200
24201 2004-02-06  Martin Baulig  <martin@ximian.com>
24202
24203         * class.c
24204         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
24205         (my_mono_class_from_generic_parameter): Likewise.
24206
24207 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
24208
24209         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
24210         contents of the symbol files lazily.
24211
24212         * object.h (MonoThread): Add 'name' and 'name_len' fields.
24213
24214         * threads.h threads.c icall.c: New icalls for getting and setting the
24215         threads name.
24216
24217 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
24218
24219         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
24220         Raise an exception when the domain is not found.
24221
24222 2004-02-03  Martin Baulig  <martin@ximian.com>
24223
24224         * reflection.c (mono_image_get_methodspec_token): Use the
24225         uninflated signature; fixes gen-33.
24226
24227 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24228
24229         * gc.c threads.c: Make the finalizer thread a normal managed thread so
24230         the finalizer code can use thread functionality.
24231
24232         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
24233         the finalizer thread.
24234
24235         * threads.c: Make some functions more robust.
24236
24237         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
24238
24239         * metadata.h: Add new marshalling conventions.
24240
24241         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
24242         stringbuilder marshalling. Fixes #53700.
24243
24244         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
24245
24246         * reflection.c (mono_image_get_type_info): Save declarative security
24247         info.
24248
24249         * reflection.c (mono_image_get_field_info): Handle uninitialized 
24250         unmanaged fields as well.
24251
24252         * appdomain.c: Bump corlib version.
24253
24254 2004-02-01  Martin Baulig  <martin@ximian.com>
24255
24256         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
24257         method type arguments.  
24258
24259 2004-01-30  Duncan Mak  <duncan@ximian.com>
24260
24261         * marshal.h: Add prototype for
24262         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
24263         and
24264         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
24265         fix the build.
24266
24267 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
24268
24269         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
24270         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
24271
24272 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
24273
24274         * marshal.c (mono_marshal_get_native_wrapper): Add support for
24275         custom marshalling of valuetypes.
24276
24277         * marshal.c: Fix some warnings.
24278
24279 2004-01-29  Martin Baulig  <martin@ximian.com>
24280
24281         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
24282         for generic method parameters.
24283
24284         * reflection.c (method_encode_methodspec): Write the uninflated
24285         signature into the methodspec table.
24286         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
24287         is always the uninflated method.
24288         (reflection_methodbuilder_to_mono_method): Copy the generic
24289         parameters from the MethodBuilder into `header->gen_params'.
24290
24291 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
24292
24293         * class.c (mono_class_from_generic_parameter): Fix warning.
24294
24295 2004-01-27  Martin Baulig  <martin@ximian.com>
24296
24297         * class.c (mono_class_from_generic_parameter): Don't create
24298         `klass->methods' here.  
24299
24300 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
24301
24302         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
24303         extension since it does not work with libraries named lib<FOO>.dll.so.
24304
24305 2004-01-25  Martin Baulig  <martin@ximian.com>
24306
24307         * class.c (mono_class_inflate_generic_type): Added support for
24308         MONO_TYPE_GENERICINST.
24309
24310         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
24311         inflate methods on open constructed types.      
24312
24313 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24314
24315         * object.c: fire ProcessExit event in the root AppDomain after running
24316         Main. Fixes bug #53299.
24317
24318 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
24319
24320         * socket-io.c: include the new socket-wrappers.h header.
24321         Use the wrappers instead of the unix socket functions to make the code
24322         more clear.
24323
24324 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
24327
24328         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
24329         Fixes #22532.
24330
24331 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
24332
24333         * reflection.c (mono_image_create_pefile): Handle the case when the
24334         entry point is not a MethodBuilder.
24335
24336         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
24337         field to ReflectionMethod since it is not allways a builder.
24338
24339         * reflection.c (type_get_fully_qualified_name): New helper function to
24340         return the fully qualified name of a type.
24341
24342         * reflection.c (encode_marshal_blob): Always emit the fully qualified
24343         type name for custom marshallers.
24344
24345         * reflection.c (mono_marshal_spec_from_builder): Ditto.
24346
24347         * class.c (mono_class_setup_vtable): If a parent class already 
24348         implements an interface, use the implementing methods from that class.
24349         Fixes #53148.
24350
24351 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24352
24353         * threadpool.c: just return instead of ExitThread to allow for thread
24354         clean up earlier.
24355
24356 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
24357
24358         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
24359         when closing resource modules.
24360
24361         * reflection.c (mono_image_create_pefile): Handle the case when the
24362         entry point is not a MethodBuilder.
24363
24364         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
24365         field to ReflectionMethod since it is not allways a builder.
24366
24367 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
24368
24369         * marshal.c (mono_marshal_get_managed_wrapper): 
24370         mono_marshal_alloc takes native int so CONV_I
24371         the arg for 64bits.
24372
24373 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
24374
24375         * reflection.c (fixup_cattrs): New function to fixup the methoddef
24376         tokens in the cattr table. Fixes #53108.
24377
24378 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24379
24380         * loader.c: don't trim ".dll" before looking up in the config file.
24381         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
24382
24383 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24384
24385         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
24386         Return the module which contains the resource as well.
24387         (ves_icall_System_Reflection_Module_Close): New icall.
24388
24389         * appdomain.c: Bump corlib version number.
24390
24391         * image.c (mono_image_addref): New public function.
24392
24393         * assembly.c: Call mono_image_addref.
24394
24395         * reflection.c (mono_module_get_object): Increase reference count of 
24396         the image.
24397
24398         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
24399         Fixes #22532.
24400
24401         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
24402         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
24403         proper exceptions on DllImport problems.
24404
24405 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
24406
24407         * class.c, metadata.c: eliminate CSIZE macro.
24408
24409 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
24410
24411         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
24412         * object.h: Added async_callback field in MonoAsyncResult.
24413         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
24414         * verify.c: Added async_callback in MonoAsyncResult layout.
24415
24416 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
24417
24418         * reflection.c (mono_reflection_get_custom_attrs): Add support
24419         for Modules.
24420
24421 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24422
24423         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
24424         marshalling.
24425         (mono_marshal_method_from_wrapper): Add null pointer check.
24426
24427 2004-01-16  Martin Baulig  <martin@ximian.com>
24428
24429         * debug-mono-symfile.h: Set version number to 36 and reflect
24430         latest symbol writer changes.
24431
24432 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24433
24434         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
24435         multi-dimensional arrays.
24436         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
24437         (mono_class_from_mono_type): Use bounded_array_class_get.
24438         
24439         * class.c (mono_bounded_array_class_get): New function which takes
24440         a 'bounded' bool argument to distinguish vectors from one dimensional
24441         arrays.
24442
24443         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
24444         bounded_array_class_get if the array has bounds.
24445
24446         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24447         Search modules loaded using AssemblyBuilder:AddModule as well.
24448
24449 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24450
24451         * appdomain.c: increased corlib version.
24452         * filewatcher.c: removed g_print.
24453         * icall.c:
24454         (get_property_info): only allocate what is actually requested.
24455         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
24456
24457 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24458
24459         * Makefile.am: added filewatcher.[ch]
24460         * filewatcher.[ch]: FileSystemWatcher runtime support.
24461         * icall.c: added new FSW icalls.
24462
24463 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
24464
24465         * string-icalls.c: fix stringbuilder regression as suggested by
24466         Iain McCoy <iain@mccoy.id.au>.
24467
24468 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24469
24470         * process.c (process_read_stringtable_block): Recognize '007f' as
24471         a language neutral stringtable block.
24472
24473 2004-01-12  Patrik Torstensson
24474
24475         * object.h (MonoStringBuilder) : Changed layout to support our
24476         new stringbuilder class.
24477         * marshal.c: Change marshalling to support the new layout of 
24478         string builder.
24479         * appdomain.c: increased version number because new layout of
24480         string builder.
24481
24482 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
24483
24484         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
24485         assembly name as an string instead of an AssemblyName, since it is
24486         easier to extract info from it.
24487
24488         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
24489         the culture subdirectories too. Fixes #52231.
24490
24491 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24492
24493         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
24494         It takes 2 new parameters with an optional name for the method to look
24495         for and case ignoring info.
24496
24497         * threadpool.c: removed unused variable.
24498
24499 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24500
24501         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
24502         It takes 2 new parameters with an optional name for the property to look
24503         for and case ignoring info.
24504         Fixes bug #52753.
24505
24506 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24507
24508         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
24509         Fix #52451.
24510
24511 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24512
24513         * appdomain.c:
24514         * assembly.c: escape the uri before passing it to g_filename_from_uri.
24515         Fixes bug #52630.
24516
24517 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
24518
24519         * reflection.c: Add support for more than one unmanaged resource.
24520
24521         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
24522         in field->def_value, as done in all other cases.
24523
24524         * reflection.c (mono_reflection_get_custom_attrs): Add support for
24525         TypeBuilders.
24526
24527         * reflection.c (mono_reflection_create_runtime_class): Remove 
24528         errorneous assignment to klass->element_class, since it is already
24529         done in mono_reflection_setup_internal_class.
24530
24531 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24532
24533         * gc.c: added missing LeaveCriticalSection.
24534         * icall.c: indented a couple of lines.
24535         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
24536         if we call EndInvoke inside a callback. Fixes bug #52601.
24537
24538 2004-01-07  Martin Baulig  <martin@ximian.com>
24539
24540         * mono-debug-debugger.h
24541         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
24542
24543 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
24544
24545         * appdomain.c: Use messages in NotImplementedException.
24546
24547         * exception.c (mono_get_exception_not_implemented): Now this takes
24548         a message argument.
24549
24550         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
24551         exception instead of g_asserting an aborting when something is not
24552         implemented.
24553
24554         Add some inline docs.
24555
24556 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * reflection.h: Update after changes to object layout.
24559
24560         * reflection.c: Implement saving of unmanaged aka win32 resources.
24561
24562         * appdomain.c: Bump version number.
24563
24564         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
24565         Handle missing domains gracefully.
24566
24567 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
24568
24569         * file-io.c : On Windows, there are much more invalid_path_chars.
24570
24571 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24572
24573         * class.h, object.c: prepare for GetType () speedup.
24574
24575 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
24576
24577         * profiler.c: workaround for --profile null reference exception on
24578           cygwin. Patch by Patrik Torstensson.
24579
24580 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
24581
24582         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
24583         make work for unaligned access.
24584
24585 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
24586
24587         * class.c: small cleanup (class->fields [i] -> field).
24588         * image.c: check address of metadata is valid.
24589
24590 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
24591
24592         * assembly.h assembly.c (mono_assembly_loaded): New public function to
24593         search the list of loaded assemblies.
24594
24595         * reflection.c (mono_reflection_type_from_name): Use 
24596         mono_assembly_loaded instead of mono_image_loaded.
24597
24598         * reflection.c: Fix warnings.
24599
24600 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
24601
24602         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
24603         is dynamic. This is needed since an assembly can contain both dynamic and
24604         non-dynamic images.
24605
24606         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
24607         assembly->dynamic.
24608
24609         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
24610
24611         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
24612         to store modules loaded using AddModule.
24613
24614         * reflection.c (mono_image_fill_file_table): Generalize this so it works
24615         on Modules.
24616
24617         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
24618
24619         * reflection.c (mono_image_fill_export_table_from_module): New function to
24620         fill out the EXPORTEDTYPES table from a module.
24621
24622         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
24623         into a separate function. Also handle loaded non-dynamic modules.
24624
24625         * reflection.c (mono_image_basic_init): Fix memory allocation.
24626
24627         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24628
24629         * assembly.c (mono_assembly_load_references): Make this public.
24630
24631 2003-12-19  Martin Baulig  <martin@ximian.com>
24632
24633         * class.c (mono_class_initialize_generic): Made this static, take
24634         a `MonoGenericInst *' instead of a `MonoClass *'.
24635         (mono_class_from_generic): Call mono_class_initialize_generic()
24636         unless we're already initialized or being called from
24637         do_mono_metadata_parse_generic_inst().
24638
24639         * class.h (MonoGenericInst): Added `initialized' and
24640         `init_pending' flags.
24641
24642         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
24643         `mono_class_init (gklass)' or mono_class_initialize_generic()
24644         here; set `generic_inst->init_pending' while parsing the
24645         `type_argv'.
24646
24647 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
24648
24649         * locales.c: include string.h for memxxx prototypes
24650
24651 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24652
24653         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
24654         constructor when accessing literal fields.
24655
24656 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
24657
24658         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24659
24660         * reflection.c (assembly_add_resource_manifest): New function to fill
24661         the MANIFESTRESOURCE table.
24662
24663         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
24664
24665         * reflection.h: Update to changes in class layout.
24666
24667         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
24668         Reenable call to mono_runtime_is_shutting_down ().
24669
24670         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
24671         determine if the runtime is shutting down.
24672
24673 2003-12-16  Jackson Harper <jackson@ximian.com>
24674
24675         * icall.c: comment out call to mono_runtime_is_shutting_down to
24676         fix build.
24677         
24678 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
24679
24680         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
24681         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
24682
24683 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
24684
24685         * reflection.c: move definition of swap_with_size
24686         to before its first call
24687
24688 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
24689
24690         * appdomain.c (mono_runtime_is_shutting_down): New public function.
24691
24692         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
24693         icall.
24694
24695         * object.c: Fix warnings.
24696
24697         * icall.c (ves_icall_Type_Get...): Only consider inherited static
24698         members if FlattenHierarchy is set.
24699
24700         * reflection.c (mono_image_add_decl_security): New function to emit
24701         declarative security.
24702
24703         * reflection.h reflection.c: Add support for declarative security.
24704
24705         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24706         
24707 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24708
24709         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24710         
24711         * appdomain.c verify.c: Moved corlib version checking into its own
24712         function in appdomain.c since it needs to create vtables etc.
24713
24714 2003-12-13  Patrik Torstensson <p@rxc.se>
24715
24716         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
24717         instead of unwrapped server.
24718
24719 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
24720
24721         * verify.c (check_corlib): Fix field index.
24722
24723 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
24724
24725         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
24726         GetGacPath icall.
24727
24728 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
24729
24730         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
24731         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
24732         cope with sizeof(size_t) != sizeof(guint32).
24733
24734 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24735
24736         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
24737         in case of failure.
24738
24739 2003-12-10  Mark Crichton <crichton@gimp.org>
24740
24741         * icall.c: removed the GetNonZeroBytes.  We now handle this case
24742         in managed code.
24743
24744         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
24745
24746 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
24747
24748         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
24749         marked as deleted.
24750
24751 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24752
24753         * verify.c (check_corlib): Handle the case when the version field is 
24754         initialized by a static constructor.
24755
24756 2003-12-08  Patrik Torstensson  <p@rxc.se>
24757
24758     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
24759
24760 2003-12-08  Martin Baulig  <martin@ximian.com>
24761
24762         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
24763         a MonoReflectionGenericParameter, also take the parameter index
24764         and name as arguments.
24765         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
24766         (ves_icall_MonoGenericParam_initialize): New interncall.
24767         (ves_icall_Type_make_byref_type): New interncall.
24768
24769         * reflection.h (MonoReflectionGenericParam): Derive from
24770         MonoReflectionType, not just from MonoObject.  Added `refobj' and
24771         `index' fields.
24772
24773         * reflection.c (mono_reflection_define_generic_parameter): Create
24774         and return a new MonoReflectionGenericParam; don't initialize the
24775         constraints here.
24776         (mono_reflection_initialize_generic_parameter): New public method;
24777         initializes the constraints and creates the `param->pklass'.
24778
24779 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24780
24781         * reflection.h reflection.c: Use the new fields 'num_types', 
24782         'num_fields' and 'num_methods' to track the number of types etc.
24783
24784         * verify.c (check_corlib): Check corlib version number.
24785
24786 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
24787
24788         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
24789         function works on all methods.
24790
24791 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24792
24793         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
24794         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
24795         the custom_type_info flag of the transparent proxy.
24796         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
24797         objects that supports IRemotingTypeInfo.
24798         * object.h: Added custom_type_info field in transparent proxy.
24799
24800 2003-12-06  Martin Baulig  <martin@ximian.com>
24801
24802         * class.c (mono_class_create_from_generic): Removed.
24803         (mono_class_from_generic): Check `ginst->klass' before doing
24804         anything else.  This is important to fully support "recursive"
24805         generic types.
24806
24807         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
24808         empty `generic_inst->klass' before doing anything else.
24809
24810 2003-12-06  Dick Porter  <dick@ximian.com>
24811
24812         * verify.c: 
24813         * object.h:
24814         * icall.c:
24815         * locales.c: Use C structs to access class fields.  Don't do a
24816         conversion between MonoString and UChar because both are
24817         platform-endian UTF-16.  Compare now takes startindex and count
24818         parameters.  Add a char overload for IndexOf.  Speed up the
24819         invariant string IndexOf.
24820
24821 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
24822
24823         * Makefile.am (monosn_LDADD): Fix parallel build.
24824
24825 2003-12-04  Martin Baulig  <martin@ximian.com>
24826
24827         * icall.c
24828         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24829         (ves_icall_Type_make_array_type): New interncall.       
24830
24831 2003-12-04  Martin Baulig  <martin@ximian.com>
24832
24833         * locales.c: also change it in the !HAVE_ICU case.
24834
24835 2003-12-04  Dick Porter  <dick@ximian.com>
24836
24837         * icall.c:
24838         * locales.c: construct_compareinfo is now in CompareInfo, not
24839         CultureInfo.
24840
24841 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24842
24843         * image.c (mono_image_load_file_for_image): Cache loaded images in the
24844         image->files array.
24845
24846         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
24847         table as well.
24848
24849         * assembly.c (mono_assembly_load_references): Only load references
24850         once.
24851
24852         * class.c (mono_class_from_name): Avoid linear search of the 
24853         EXPORTEDTYPE table.
24854
24855         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
24856
24857 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24858
24859         * image.h (MonoImage): Add 'field_cache' field.
24860
24861         * loader.c (mono_field_from_token): Cache field lookups.
24862         
24863         * reflection.c (mono_module_get_object): Fix name property.
24864
24865         * icall.c (ves_icall_get_enum_info): Update after changes to 
24866         mono_metadata_get_constant_index ().
24867
24868         * icall.c: Get rid of get_type_info icall, use a separate icall for
24869         each type property to avoid needless memory allocations. Fixes #51514.
24870
24871         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
24872         to avoid needless binary searches.
24873
24874         * class.c (class_compute_field_layout): Move the initialization of
24875         field->def_value to mono_class_vtable ().
24876
24877         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
24878         non-corlib types.
24879
24880         * object.c (mono_object_allocate): Make it inline.
24881
24882         * object.c (mono_object_allocate_spec): Make it inline.
24883         
24884 2003-12-02  Dick Porter  <dick@ximian.com>
24885
24886         * locales.c (create_NumberFormat): NumberFormatInfo construction.
24887         Patch by Mohammad DAMT (mdamt@cdl2000.com).
24888
24889 2003-12-01  Dick Porter  <dick@ximian.com>
24890
24891         * threads.c: Fix signature and call in CreateMutex and
24892         CreateEvent.
24893
24894 2003-12-01  Dick Porter  <dick@ximian.com>
24895
24896         * icall.c: 
24897         * locales.c: Implement string compares and searching
24898
24899         * object.h: Add extra Thread field
24900
24901 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24902
24903         * reflection.c (fixup_method): Add support for MonoCMethod.
24904
24905 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24906
24907         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24908
24909         * reflection.c (assembly_name_to_aname): Allow extra characters in
24910         assembly names. Fixes #51468.
24911
24912 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24913
24914         * exception.c (mono_exception_from_name_domain): New helper function.
24915
24916         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24917         exception object in the correct domain.
24918
24919         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24920         formatting + make a copy a the input data.
24921
24922         * loader.c (mono_get_method_from_token): Methods which contain
24923         native code do not have entries in the ImplMap.
24924
24925         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24926         Thanks to Gonzalo for spotting this.
24927         
24928         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24929         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24930
24931         * assembly.h (mono_assembly_load_from): Split the second part of 
24932         assembly loading into a new public function.
24933
24934         * exception.h (mono_get_exception_bad_image_format): New function.
24935
24936 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24937
24938         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24939         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24940         
24941         * icall.c: Add new icall for creating dynamic methods.
24942
24943         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24944
24945         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24946
24947         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24948         create a dynamic method.
24949
24950         * reflection.c (resolve_object): New helper function.
24951
24952         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24953         which manipulate it so they can also work on dynamic methods.
24954
24955         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24956         creating the MonoReflectionMethodAux structure if it is not needed.
24957         
24958         * reflection.h verify.c: Update after changes to object layout.
24959
24960         * reflection.c (method_builder_encode_signature): Fix compilation on
24961         gcc 2.95.x.
24962
24963 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24964
24965         * appdomain.h: Added support for context static fields. Added static_data
24966           field to MonoAppContext and renamed thread_static_fields to a more
24967           generic special_static_fields in MonoAppDomain, since it can now contain
24968           context static fields.
24969         * domain.c: Updated hashtable name.
24970         * object.c: Replaced field_is_thread_static() for a more generic
24971           field_is_special_static() which also checks for context static attribute.
24972           In mono_class_vtable(), added support for static context fields.
24973         * threads.c: Changed methods that manage thread static fields to more
24974           generic methods so they can be reused both for thread and context static
24975           data.
24976         * threads.h: Declared some new methods.
24977
24978 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24979
24980         * reflection.h: Update after changes to the managed types.
24981
24982         * reflection.c (encode_custom_modifiers): New helper function.
24983
24984         * reflection.c (method_encode_signature): Emit custom modifiers.
24985
24986         * reflection.c (field_encode_signature): Emit custom modifiers.
24987
24988 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24989
24990         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24991
24992         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24993         implementation.
24994
24995         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24996         icall.
24997
24998         * object.c (mono_field_get_value_object): New function.
24999
25000         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
25001         specific.
25002
25003 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
25004
25005         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
25006         return a preallocated out-of-memory exception instance.
25007
25008         * object.c (out_of_memory): Use the new function.
25009
25010         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
25011         flag is before the custom modifiers. Fixes #49802.
25012
25013 2003-11-16  Martin Baulig  <martin@ximian.com>
25014
25015         * class.c (mono_class_is_open_constructed_type): Implemented the
25016         MONO_TYPE_GENERICINST case.
25017
25018 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
25019
25020         * assembly.c (mono_assembly_fill_assembly_name): New function to
25021         fill out the MonoAssemblyName structure.
25022         (mono_assembly_open): Use the new function.
25023
25024         * icall.c (fill_reflection_assembly_name): New helper function.
25025
25026         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
25027         new function.
25028
25029         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
25030
25031 2003-11-15  Martin Baulig  <martin@ximian.com>
25032
25033         * class.c (mono_class_is_open_constructed_type): New public
25034         function; checks whether a type is an open constructed type,
25035         ie. whether it still contains type parameters.
25036         (mono_class_inflate_generic_type): If we're a type parameter and
25037         the inflated type is also a MONO_TYPE_(M)VAR, return the original
25038         type.
25039
25040         * class.h (MonoGenericInst): Added `guint32 is_open'.
25041
25042         * loader.c (method_from_methodspec): Check whether we're an open
25043         or closed constructed type and set `ginst->is_open'.
25044
25045         * reflection.c (mono_reflection_bind_generic_parameters): Check
25046         whether we're an open or closed constructed type and set
25047         `ginst->is_open'.
25048         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
25049         from open constructed types.
25050
25051 2003-11-15  Martin Baulig  <martin@ximian.com>
25052
25053         * reflection.c (mono_reflection_bind_generic_parameters): If we're
25054         a generic instance (instead of a generic type declaration) with
25055         unbound generic parameters, bind them to our actual types.
25056
25057 2003-11-14  Martin Baulig  <martin@ximian.com>
25058
25059         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
25060
25061         * reflection.c (mono_reflection_bind_generic_parameters): If we're
25062         an interface type, populate `res->interfaces' with instantiated
25063         versions of all the interfaces we inherit.
25064
25065 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
25066
25067         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
25068         when MONO_PATH is set but doesn't contain the install dir.
25069
25070 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25071
25072         * icall.c:
25073         (ves_icall_Type_GetInterfaces): don't return an interface twice when
25074         it's also implemented in base classes. Fixes bug #50927.
25075
25076 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
25077
25078         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
25079         if this method is called from a finalizer. Fixes #50913.
25080
25081 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
25082
25083         * threads.c: Implement VolatileRead/VolatileWrite
25084
25085         * icall.c: Add new icalls for VolatileRead/VolatileWrite
25086
25087 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
25088
25089         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
25090         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
25091         2.95.3.
25092
25093         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
25094         from Peter Ross (pro@missioncriticalit.com).
25095         
25096 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
25097
25098         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
25099
25100 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
25101
25102         * assembly.c (mono_assembly_load_references): Disable check because it
25103         triggers on older corlibs which lots of people have.
25104
25105 2003-11-12  Jackson Harper  <jackson@ximian.com>
25106
25107         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
25108         load corlib.dll if mscorlib.dll is not found.
25109         * assembly.h: Remove corlib name define.
25110         * class.c:
25111         * domain.c:
25112         * image.c: Change corlib name to mscorlib.
25113         
25114 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
25115
25116         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
25117
25118 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
25119
25120         * appdomain.h: Added loader_optimization here to sync with the C#
25121         code, and add disallow_binding_redirects field.
25122
25123 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
25124
25125         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
25126
25127         * reflection.c (mono_image_build_metadata): Fix crash on modules
25128         with no types.
25129
25130         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
25131
25132         * icall.c (ves_icall_get_method_info): Return callingConvention as
25133         well.
25134
25135         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
25136         namespaces from the EXPORTEDTYPE table as well.
25137
25138         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
25139         from all modules inside the assembly.
25140         
25141 2003-11-11  Martin Baulig  <martin@ximian.com>
25142
25143         * reflection.c (mono_reflection_bind_generic_parameters): Make
25144         this work for interfaces.
25145
25146 2003-11-11  Martin Baulig  <martin@ximian.com>
25147
25148         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
25149
25150 2003-11-11  Martin Baulig  <martin@ximian.com>
25151
25152         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
25153         "MonoInflatedMethod" and "MonoInflatedCtor".
25154
25155 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
25156
25157         * reflection.c (resolution_scope_from_image): Use the assembly table
25158         from the manifest module, since other modules don't have it.
25159
25160         * debug-helpers.c (mono_type_full_name): New helper function.
25161
25162         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
25163
25164         * image.c (mono_image_load_file_for_image): New public function which
25165         is a replacement for the load_file_for_image in class.c.
25166
25167         * assembly.c (mono_assembly_load_module): A wrapper for the function
25168         above which does assembly association and reference loading too.
25169
25170         * class.c (mono_class_from_name): Call mono_assembly_load_module.
25171
25172 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25173
25174         * appdomain.c: not all of the attributes for the full assembly name
25175         are required and the order doesn't matter. Fixes bug #50787.
25176
25177 2003-11-10  Dick Porter  <dick@ximian.com>
25178
25179         * locales.c: Use platform-endian UTF16
25180
25181 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
25182
25183         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
25184         
25185 2003-11-10  Martin Baulig  <martin@ximian.com>
25186
25187         * metadata.c
25188         (mono_metadata_load_generic_params): Make this actually work.
25189
25190         * reflection.c (mono_reflection_bind_generic_parameters): If our
25191         parent is a generic instance, pass all the `types' to it, no
25192         matter whether it has the same number of type parameters or not.
25193
25194 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
25195
25196         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
25197
25198         * assembly.c (mono_assembly_load_references): Move the image<->assembly
25199         assignment code to this function so it gets called recursively for all
25200         modules.
25201
25202         * image.c (load_modules): Remove the assembly assignment since it is
25203         now done by mono_assembly_load_references.
25204         
25205         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
25206         Add 'module' argument.
25207         (mono_module_get_types): New helper function.
25208         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
25209
25210 2003-11-08  Martin Baulig  <martin@ximian.com>
25211
25212         * class.c (mono_class_inflate_generic_method): Interface method
25213         don't have a header.
25214
25215         * reflection.c (mono_image_get_methodspec_token): Take an
25216         additional `MonoGenericInst *' argument instead of reading it from
25217         the header; this is necessary to support interfaces.
25218         (mono_image_create_token): Pass the `MonoGenericInst *' from the
25219         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
25220         (inflated_method_get_object): Take an additional `MonoGenericInst *'
25221         argument.
25222
25223         * reflection.h (MonoReflectionInflatedMethod): Added
25224         `MonoGenericInst *ginst'.
25225
25226 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
25227
25228         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
25229
25230 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
25231
25232         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
25233
25234 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
25235
25236         * reflection.c 
25237         (reflection_methodbuilder_from_method_builder):
25238         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
25239         initialize a ReflectionMethodBuilder structure.
25240         (mono_image_get_methodbuilder_token):
25241         (mono_image_get_ctorbuilder_token): New functions to emit memberref
25242         tokens which point to types in another module inside the same assembly.
25243
25244         * reflection.c: Use the new helper functions.
25245         
25246         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
25247
25248         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
25249         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
25250
25251         * reflection.c (resolution_scope_from_image): Emit a moduleref if
25252         neccesary.
25253
25254         * reflection.c (mono_image_build_metadata): Emit metadata only for the
25255         current module. Emit the manifest only for the main module.
25256
25257         * reflection.c (mono_image_create_token): Add assertion when a 
25258         memberref needs to be created.
25259
25260         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
25261
25262         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
25263         larger buffer for the custom attribute blob. Fixes #50637.
25264         
25265 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25266
25267         * threadpool.c: notify listener on async processing handles after
25268         invoking the async callback. Thanks to Zoltan.
25269
25270 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
25271
25272         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
25273         avoid code duplication.
25274
25275         * reflection.h (MonoDynamicImage): New type which is currently unused,
25276         but will be used through the ref.emit code in place of 
25277         MonoDynamicAssembly.
25278
25279         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
25280         object layout.
25281
25282         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
25283         a MonoDynamicImage instead of just a MonoImage.
25284         
25285         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
25286         icalls to ModuleBuilder but keep their semantics, so they will work
25287         with moduleb->assemblyb. This will change later.
25288         
25289 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
25290
25291         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
25292         object layout.
25293
25294         * reflection.c (mono_image_build_metadata): Avoid creation of a default
25295         main module, since it is now done by the managed code.
25296
25297 2003-11-03  Martin Baulig  <martin@ximian.com>
25298
25299         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
25300         `ginst->klass' here.
25301         (method_encode_methodspec): Don't use the `ginst->generic_method's
25302         klass if it's a generic instance, use `ginst->klass' in this case.
25303
25304 2003-11-03  Martin Baulig  <martin@ximian.com>
25305
25306         * reflection.c (mono_image_get_generic_method_param_info):
25307         Removed, use mono_image_get_generic_param_info() instead.
25308         (mono_image_get_type_info): Write the GenericParam table before
25309         the Method table.  This is neccessary because in the GenericParam
25310         table, type parameters of the class (ie. '!0' etc.) must come
25311         before the ones from its generic methods (ie. '!!0' etc).
25312
25313 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
25314
25315         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
25316
25317 2003-11-02  Martin Baulig  <martin@ximian.com>
25318
25319         * reflection.c (create_generic_typespec): Take a
25320         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
25321         the generic parameters from it.
25322
25323 2003-11-02  Martin Baulig  <martin@ximian.com>
25324
25325         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
25326         instead of a `MonoClassField *' since we just need the type.
25327         (create_generic_typespec): New static function.  Creates a
25328         TypeSpec token for a generic type declaration.
25329         (mono_image_get_generic_field_token): New static function.
25330         (mono_image_create_token): If we're a FieldBuilder in a generic
25331         type declaration, call mono_image_get_generic_field_token() to get
25332         the token.
25333
25334 2003-11-02  Martin Baulig  <martin@ximian.com>
25335
25336         * reflection.h
25337         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
25338         `MonoReflectionGenericInst *declaring_type' and
25339         `MonoReflectionGenericInst *reflected_type' fields.
25340
25341         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
25342         `MonoReflectionGenericInst *declaring_type' and a
25343         `MonoReflectionGenericInst *reflected_type' argument instead of a
25344         single `MonoReflectionGenericInst *type' one.  Set
25345         `res->declaring_type' and `res->reflected_type' from them.
25346         (mono_reflection_inflate_field): Likewise.      
25347
25348 2003-11-02  Martin Baulig  <martin@ximian.com>
25349
25350         * class.c (mono_class_setup_vtable): Don't store generic methods
25351         in the vtable.  
25352
25353 2003-11-02  Martin Baulig  <martin@ximian.com>
25354
25355         * reflection.h (MonoReflectionGenericInst): Added
25356         `MonoReflectionType *declaring_type'.
25357
25358         * reflection.c (mono_reflection_bind_generic_parameters): Use
25359         `if (tb->parent)' instead of `klass->parent'.
25360
25361 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
25362
25363         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
25364         with an empty ASSEMBLY table.
25365
25366         * reflection.c (mono_image_build_metadata): Avoid using the same loop
25367         variable in the inner and outer loops.
25368
25369 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
25370
25371         * metadata.h (mono_metadata_make_token): Put parentheses around macro
25372         argument.
25373
25374         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
25375         
25376         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
25377         icalls. Instead, do everything in managed code. This is needed since
25378         it is hard to restore the original domain etc. in unmanaged code in the
25379         presence of undeniable exceptions.
25380
25381         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
25382         New icalls to push and pop appdomain refs.
25383
25384 2003-10-31  Martin Baulig  <martin@ximian.com>
25385
25386         * class.c (inflate_generic_type): Renamed to
25387         mono_class_inflate_generic_type() and made it public.
25388
25389         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
25390         New interncall.
25391
25392         * loader.c (mono_field_from_memberref): Also set the retklass for
25393         typespecs.
25394
25395         * fielder.c (mono_image_get_inflated_field_token): New static
25396         method; creates a metadata token for an inflated field.
25397         (mono_image_create_token, fixup_method): Added support for
25398         "MonoInflatedField".
25399         (fieldbuilder_to_mono_class_field): New static function.
25400         (mono_reflection_inflate_field): New public function.
25401
25402         * reflection.h
25403         (MonoReflectionGenericInst): Added `MonoArray *fields'.
25404         (MonoReflectionInflatedField): New typedef.     
25405
25406 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
25407
25408         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
25409         for Solaris and other platforms without s6_addr16
25410
25411 2003-10-30  Martin Baulig  <martin@ximian.com>
25412
25413         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
25414         argument instead of two.
25415         (mono_class_inflate_generic_signature): Likewise.
25416         (inflate_generic_header): Likewise.
25417         (mono_class_inflate_generic_method): Likewise.  In addition, if
25418         `ginst->klass' is set, it becomes the new `method->klass'.
25419
25420         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
25421         field.
25422
25423         * reflection.c (encode_generic_method_sig): Write a 0xa as the
25424         first byte. [FIXME]
25425         (method_encode_methodspec): If we have generic parameters, create
25426         a MethodSpec instead of a MethodRef.
25427         (fixup_method): Added support for "MonoInflatedMethod" and
25428         "MonoInflatedCtor".
25429         (mono_image_create_token): Added support for "MonoInflatedMethod"
25430         and "MonoInflatedCtor".
25431         (inflated_method_get_object): New static function; returns a
25432         managed "System.Reflection.MonoInflatedMethod" object.
25433         (mono_reflection_bind_generic_method_parameters): Return a
25434         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
25435         (mono_reflection_inflate_method_or_ctor): Likewise.
25436         (mono_image_get_generic_method_param_info): Initialize unused
25437         fields to zero.
25438         (mono_image_get_generic_param_info): Likewise.
25439
25440         * reflection.h (MonoReflectionInflatedMethod): New public
25441         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
25442         "S.R.MonoInflatedCtor" classes.
25443
25444         * loader.c (method_from_memberref): If we're a TypeSpec and it
25445         resolves to a generic instance, inflate the method.
25446
25447 2003-10-28  Dick Porter  <dick@ximian.com>
25448
25449         * object.c (mono_runtime_run_main): Convert command-line arguments
25450         into utf8, falling back to the user's locale encoding to do so.
25451
25452 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
25453
25454         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
25455         at this time.
25456
25457         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
25458
25459         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
25460         up icalls at method definition time. Partially fixes #33569.
25461
25462 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
25463
25464         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
25465         marshalling of arrays. Fixes #50116.
25466
25467         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
25468
25469         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
25470         points to a vtable in the dying appdomain.
25471
25472         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
25473         listeners into unmanaged code inside the lock.
25474
25475         * object.c (mono_class_vtable): Turn off typed allocation in non-root
25476         domains and add some comments.
25477
25478 2003-10-25  Martin Baulig  <martin@ximian.com>
25479
25480         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
25481
25482         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
25483
25484         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
25485         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
25486         currently parsing.  Create the generic class and store it in
25487         `generic_inst->klass' before parsing the type arguments.  This is
25488         required to support "recursive" definitions; see mcs/tests/gen-23.cs
25489         for an example.
25490         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
25491         to support recursive typespec entries.
25492
25493         * class.c (mono_class_setup_parent): If our parent is a generic
25494         instance, we may get called before it has its name set.
25495         (mono_class_from_generic): Splitted into
25496         mono_class_create_from_generic() and mono_class_initialize_generic().
25497
25498 2003-10-25  Martin Baulig  <martin@ximian.com>
25499
25500         * icall.c (ves_icall_Type_BindGenericParameters): Return a
25501         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
25502         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
25503         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
25504
25505         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
25506         (create_typespec): Likewise.
25507         (mono_reflection_bind_generic_parameters): Return a
25508         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
25509         (mono_reflection_inflate_method_or_ctor): New public function.
25510
25511         * reflection.h (MonoReflectionGenericInst): New typedef.        
25512
25513 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
25514
25515         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
25516         inside the domain lock. Fixes #49993.
25517         
25518         * object.c (mono_class_vtable): When typed allocation is used, 
25519         allocate vtables in the GC heap instead of in the mempool, since the
25520         vtables contain GC descriptors which are used by the collector even
25521         after the domain owning the mempool is unloaded.
25522
25523         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
25524
25525         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
25526         reflect what it does. Also invalidate mempools instead of freeing
25527         them if a define is set.
25528
25529         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
25530         of the appdomain.
25531         
25532         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
25533         hold the finalizable objects in this domain.
25534
25535         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
25536         appdomain.
25537
25538         * appdomain.c (mono_domain_set): New function to set the current
25539         appdomain, but only if it is not being unloaded.
25540
25541         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
25542         appdomain which is being unloaded.
25543         
25544         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
25545         unloading of the root appdomain.
25546
25547         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
25548         icall to execute a method in another appdomain. Intended as a 
25549         replacement for InternalSetDomain, which can confuse the code 
25550         generation in the JIT.
25551
25552         * appdomain.c (mono_domain_is_unloading): New function to determine
25553         whenever an appdomain is unloading.
25554
25555         * appdomain.c (mono_domain_unload): New function to correctly unload
25556         an appdomain.
25557
25558         * assembly.c (mono_assembly_load_references): Check that an assembly
25559         does not references itself.
25560
25561         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
25562         domain manually, it asks the finalizer thread to do it, then waits for
25563         the result. Also added a timeout.
25564
25565         * icall.c: Register the new icalls.
25566
25567         * threads.h threads.c: Export the mono_gc_stop_world and 
25568         mono_gc_start_world functions.
25569         
25570         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
25571         function to fill out the mempool with 0x2a.
25572
25573 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
25574
25575         * reflection.h (MonoReflectionMethodAux): New structure to store
25576         information which is rarely used, thus is not in the MonoMethod
25577         structure.
25578
25579         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
25580         store the aux info.
25581
25582         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
25583         and marshalling info into the aux structure.
25584
25585         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
25586         from the aux structure.
25587
25588         * loader.c (mono_method_get_param_names): Retrieve the param names from
25589         the aux structure.
25590         
25591 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
25592
25593         * exception.h exception.c: Add AppDomainUnloadedException && fix 
25594         warning.
25595
25596 2003-10-21  Dick Porter  <dick@ximian.com>
25597
25598         * socket-io.c
25599         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
25600         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
25601
25602 2003-10-21  Martin Baulig  <martin@ximian.com>
25603
25604         * reflection.c (mono_reflection_bind_generic_parameters):
25605         `klass->parent' is NULL for interfaces.
25606
25607 2003-10-21  Martin Baulig  <martin@ximian.com>
25608
25609         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25610
25611 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
25612
25613         * exception.c (mono_exception_from_name_msg): New helper function for
25614         creating exceptions and initializing their message field.
25615
25616         * exception.c: Simplify functions using the new helper.
25617
25618         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
25619         New function.
25620
25621         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
25622         mono_raise_exception, since otherwise gcc doesn't generate the function
25623         epilog for raise_exception, confusing the stack unwinding in the JIT.
25624         Fixes #45043.
25625
25626         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
25627         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
25628         Fixes #49499.
25629
25630 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25631
25632         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
25633         utf8.
25634
25635 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
25636
25637         * icall.c: Removed GetUninitializedObject method because
25638           AllocateUninitializedClassInstance does the same.
25639
25640 2003-10-18  Martin Baulig  <martin@ximian.com>
25641
25642         * class.c (inflate_generic_signature): Renamed to
25643         mono_class_inflate_generic_signature() and made it public.
25644         (my_mono_class_from_generic_parameter): New static function; if we
25645         don't already have the generic parameter's MonoClass, create a
25646         very simple one which is just used internally in the runtime and
25647         not passed back to managed code.
25648
25649         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
25650
25651         * metadata.h (MonoMethodSignature): Moved the
25652         `MonoGenericParam *gen_params' to the MonoMethodHeader.
25653         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
25654
25655         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
25656         ves_icall_MonoMethod_GetGenericArguments(); this is now an
25657         interncall on the MonoMethod class, not on MethodInfo.
25658         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
25659         calling mono_reflection_bind_generic_method_parameters() directly.
25660
25661         * loader.c (mono_method_get_signature): If this is a MethodSpec;
25662         return the already computed `method->signature'.
25663         (method_from_methodspec): New static function to load a method
25664         from a MethodSpec entry.
25665         (mono_get_method_from_token): Call the new method_from_methodspec()
25666         for MethodSpec tokens.  
25667         (mono_get_method_from_token): If we're a generic method, load the
25668         type parameters.
25669
25670         * reflection.c (mono_image_get_memberref_token): Allow
25671         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
25672         table.
25673         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
25674         (mono_image_create_token): First check whether it's a generic
25675         method (so we'd need to create a MethodSpec), then do the other
25676         two alternatives.
25677         (mono_reflection_bind_generic_method_parameters): Return a
25678         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
25679         called directly from the interncall.
25680
25681 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
25682
25683         * reflection.c (load_public_key): Move loading of the public key
25684         into managed code.
25685
25686         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
25687
25688         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
25689         fields.
25690
25691         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
25692         culture, hash_alg and public_key. Fixes #49555.
25693
25694 2003-10-17  Martin Baulig  <martin@ximian.com>
25695
25696         * class.h (MonoGenericInst): Moved this declaration here and added
25697         `MonoMethod *generic_method'.
25698
25699         * icall.c
25700         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
25701         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
25702
25703         * metadata.c (mono_metadata_type_equal): Two types of
25704         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
25705         index; ie. don't compare the address of the `MonoGenericParam'
25706         structure.
25707         (mono_metadata_load_generic_params): Removed the `MonoMethod
25708         *method' argument.
25709
25710         * metadata.h (MonoGenericInst): Moved declaration to class.h.
25711         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
25712
25713         * reflection.c (method_encode_signature): Encode the number of
25714         generic parameters.
25715         (encode_generic_method_sig): New static function.
25716         (method_encode_methodspec): New static function; creates an entry
25717         in the MethodSpec table for a generic method.
25718         (mono_image_get_methodspec_token): New static function.
25719         (mono_image_create_token): Call mono_image_get_methodspec_token()
25720         for generic methods.
25721         (mono_reflection_bind_generic_method_parameters): New public
25722         function.  Instantiates a generic method.
25723
25724 2003-10-16  Martin Baulig  <martin@ximian.com>
25725
25726         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
25727         *gen_params' here from MonoMethodHeader.
25728
25729         * metadata.c (mono_metadata_parse_method_signature): If we have
25730         generic parameters, initialize `method->gen_params' and then set
25731         the correct `type->data.generic_param' in all the parameters.
25732
25733 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
25734
25735         * threads.c (mono_threads_get_default_stacksize): New function to 
25736         return the default stacksize.
25737
25738         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
25739         termination of the finalizer thread, since the previous method had
25740         race conditions. Fixes #49628.
25741
25742         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
25743         as for the other managed threads.
25744
25745 2003-10-16  Martin Baulig  <martin@ximian.com>
25746
25747         * class.c (inflate_generic_signature): Copy `generic_param_count'
25748         and `gen_params'.
25749
25750         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
25751         New interncall.
25752
25753         * metadata.c (mono_metadata_parse_method_signature): Actually set
25754         the `method->generic_param_count' here.
25755         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
25756
25757 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
25758
25759         * object.h: Add a new field to TypedRef to simplify the implementation
25760         of the REFANY opcodes in the JIT.
25761
25762         * icall.c: Make use of the new field.
25763
25764         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
25765         dynamically.
25766
25767 2003-10-15  Martin Baulig  <martin@ximian.com>
25768
25769         * class.c (mono_class_from_gen_param): Renamed to
25770         mono_class_from_generic_parameter() and moved most of the
25771         functionality from mono_reflection_define_generic_parameter()
25772         here; ie. we create a "real" class here.
25773         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
25774         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
25775         previously been called.
25776
25777         * class.h (MonoGenericParam): Moved the declaration of this struct
25778         here from metadata.h and added `MonoMethod *method'.
25779
25780         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
25781         interncall.
25782
25783         * loader.c (mono_get_method_from_token): If we have any generic
25784         parameters, call mono_metadata_load_generic_params() to read them
25785         from the MONO_TABLE_GENERICPAR.
25786
25787         * metadata.c (mono_metadata_load_generic_params): Added
25788         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
25789
25790         * metadata.h (MonoMethodSignature): Replaced
25791         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
25792         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
25793
25794         * reflection.c (mono_reflection_define_generic_parameter): Moved
25795         most of the functionality into the new
25796         mono_class_from_generic_parameter(); set the `method' field if
25797         we're a method parameter.       
25798
25799 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
25800
25801         * marshal.c (emit_struct_conv): if native size is 0
25802         emit no code.
25803
25804 2003-10-14  Martin Baulig  <martin@ximian.com>
25805
25806         * icall.c: The generics API has changed in the spec since it was
25807         added to System.Type; these modifications make it match the spec
25808         again.
25809         (ves_icall_Type_GetGenericParameters): Renamed to
25810         `ves_icall_Type_GetGenericArguments'.
25811         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
25812         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
25813         `ves_icall_MonoType_get_HasGenericArguments'.
25814         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
25815         `ves_icall_MonoType_get_IsGenericParameter'.
25816         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
25817         this is no interncall anymore.
25818         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
25819         `ves_icall_TypeBuilder_get_IsGenericParameter'.
25820
25821 2003-10-14  Martin Baulig  <martin@ximian.com>
25822
25823         * reflection.c (mono_reflection_bind_generic_parameters): Also
25824         inflate generic methods if we're reading the class from IL.
25825
25826 2003-10-13  Martin Baulig  <martin@ximian.com>
25827
25828         * reflection.c (mono_reflection_define_generic_parameter): This
25829         method isn't called directly from the icall anymore; take a
25830         `MonoReflectionAssemblyBuilder *' so we can use this for type and
25831         method generic parameters.
25832         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
25833         (method_builder_encode_signature): Encode generic parameters.
25834         (mono_image_get_method_info): Write generic params to the
25835         MONO_TABLE_GENERICPARAM table.
25836
25837         * reflection.h (MonoReflectionMethodBuilder): Added
25838         `MonoArray *generic_params'.
25839
25840         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
25841
25842         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
25843         wrapper for mono_reflection_define_generic_parameter().
25844         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
25845
25846 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
25847
25848         * marshal.h: Add missing function to fix build.
25849
25850         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
25851         the SetLastError pinvoke attribute.
25852
25853         * marshal.c (mono_marshal_set_last_error): New helper function called
25854         by the generated code.
25855         
25856         * marshal.c (mono_mb_emit_branch): New helper function.
25857
25858         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
25859
25860         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25861         classes as parameters and return values of delegates. Fixes #29256. 
25862
25863 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
25864
25865         * locales.c: use gint32 in non HAVE_ICU case
25866
25867 2003-10-11  Martin Baulig  <martin@ximian.com>
25868
25869         * mono-debug.c (mono_debug_add_method): Added a workaround for
25870         bug #48591.
25871
25872 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
25873
25874         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
25875         delegates passed to native code must use the STDCALL calling 
25876         convention. Fixes #35987.
25877
25878 2003-10-10  Martin Baulig  <martin@ximian.com>
25879
25880         * class.c (inflate_generic_type): If we're inflating for a generic
25881         type instance (and not for a generic method), return
25882         MONO_TYPE_MVAR unchanged.
25883
25884 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25885
25886         * string-icalls.c: Join ignores null strings in the source array.
25887         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
25888         * threads.c: GetAvailableTheads is slightly more accurate.
25889
25890 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25891
25892         * threads.h threads.c : add mono_threads_set_default_stacksize
25893         and pass default to CreateThread calls.
25894
25895 2003-10-09  Dick Porter  <dick@ximian.com>
25896
25897         * icall.c:
25898         * locales.h:
25899         * locales.c: Internal calls for constructing CultureInfo and
25900         related objects from libicu (if its available.)
25901
25902 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25903
25904         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25905
25906 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25907
25908         * threadpool.c: added an argument to async_invoke_thread that is the
25909         item to process, pass the MonoAsyncResult to the thread start function
25910         when creating a new thread. This way we don't need to acquire any lock
25911         when we're creating a new thread. Readded a semaphore for faster
25912         response times (instead of that Sleep i added).
25913
25914 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25915
25916         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25917         get daylight change dates better on Windows, fix handling
25918         of platforms without tm_gmtoff.
25919
25920 2003-10-06  Martin Baulig  <martin@ximian.com>
25921
25922         * class.c (inflate_generic_method): Renamed to
25923         mono_class_inflate_generic_method() and made public.
25924         (mono_class_init): Don't inflate the generic methods here.
25925         (mono_class_from_generic): Added `gboolean inflate_methods'
25926         argument.  Inflate the methods here.
25927
25928         * loader.c (mono_method_get_param_names): Ignore instances of
25929         generic types for the moment.
25930
25931         * reflection.c (fixup_method): Added support for inflated methods.
25932         (mono_image_create_token): Use mono_image_get_methodref_token()
25933         for inflated methods.
25934         (mono_custom_attrs_from_param): Ignore instances of generic types
25935         for the moment.
25936         (mono_reflection_bind_generic_parameters): New public function.
25937         Moved all the functionality from
25938         ves_icall_Type_BindGenericParameters() here and added support for
25939         dynamic types.
25940         (mono_reflection_define_generic_parameter): Initialize
25941         `klass->methods' here.
25942
25943         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25944         functionality into mono_reflection_define_generic_parameter().
25945         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25946         TypeBuilder, return that TypeBuilder.
25947
25948 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25949
25950         * appdomain.c: removed mono_delegate_semaphore.
25951
25952         * threadpool.c:
25953         (mono_thread_pool_add): moved hash table creation inside and the thread 
25954         creation outside of the critical region.
25955         (mono_thread_pool_finish): removed obsolete code.
25956         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25957         continue or exit the thread depending on the queue.
25958
25959 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25960
25961         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25962         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25963         handle more bool marshalling options
25964
25965 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25966
25967         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25968         arrays of structs. Also add a more descriptive error message when
25969         a structure member is marshalled as LPArray.
25970
25971 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25972
25973         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25974         marshalling arrays of complex types. Fixes #29098. Also remove an
25975         usused and incomplete function.
25976
25977 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25978
25979         * gc.c: report heap_size - free_bytes as total memory allocated
25980         (bug#49362).
25981
25982 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25983
25984         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25985         fix timezone handling problems on Windows.
25986         
25987         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25988         asserts when the year is outside the range handled by ms the functions.
25989
25990         * class.c (setup_interface_offsets): If the class is an interface,
25991         fill out its interface_offsets slot.
25992
25993 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25994
25995         * threadpool.c: mark threadpool threads as background.
25996
25997 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25998
25999         * decimal.c - define DECINLINE to nothing if not using GCC
26000
26001 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
26002
26003         * assembly.c: More refcount fixes.
26004
26005 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26006
26007         * string-icalls.c: if we're not trimming, return the same string.
26008         When not splitting, don't create a new string.
26009
26010 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26011
26012         * image.c:
26013         (mono_image_open): increment the ref_count inside the critical section.
26014
26015 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
26016
26017         * image.c (mono_image_open): Fix reference counting bug.
26018
26019 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
26020
26021         * marshal.c (mono_marshal_type_size) struct alignment changed for 
26022         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
26023         64bits. Avoid leak in mono_marshal_get_native_wrapper when
26024         mono_lookup_pinvoke_call throws.        
26025
26026 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
26027
26028         * reflection.c (mono_reflection_parse_type): Fix #49114.
26029
26030         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
26031         temporary workaround for cygwin header problem.
26032
26033         * object.c (mono_object_isinst): Synchronize this with the code
26034         generated by the JIT for casts.
26035
26036 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
26037
26038         * reflection.c (encode_type): Fix #38332.
26039
26040 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
26041
26042         * marshal.c (mono_marshal_method_from_wrapper): New function to return
26043         the original method from the wrapper method.
26044
26045 2003-09-25  Martin Baulig  <martin@ximian.com>
26046
26047         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
26048         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
26049         (ves_icall_Type_get_IsGenericInstance): New interncall.
26050
26051 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
26052
26053         * object.c: fix cast warning in big endian code.
26054
26055 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
26056
26057         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
26058         
26059 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26060
26061         * assembly.c: don't call check_env from mono_assembly_load. It's
26062         already done once in mono_assemblies_init and may cause headaches when
26063         multiple threads are loading assemblies.
26064
26065 2003-09-19  Martin Baulig  <martin@ximian.com>
26066
26067         * reflection.c (mono_reflection_define_generic_parameter): Don't
26068         allocate `klass->methods', set `klass->flags' to
26069         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
26070
26071 2003-09-18  Martin Baulig  <martin@ximian.com>
26072
26073         * class.c (mono_class_init): Don't create `class->methods' if it's
26074         already initialized.
26075
26076         * metadata.c (mono_metadata_load_generic_params): Make this
26077         actually work.
26078
26079         * reflection.c (mono_reflection_define_generic_parameter): Set
26080         parent class and interfaces from the constraints.
26081
26082         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
26083         to keep this struct in sync with the declaration in TypeBuilder.cs.
26084
26085 2003-09-17  Martin Baulig  <martin@ximian.com>
26086
26087         * metadata.h (MonoType): Replaced the data's `int type_param'
26088         field with `MonoGenericParam *generic_param'.
26089         (MonoGenericParam): Added `MonoClass *klass'.
26090
26091         * class.c (mono_class_from_gen_param): Removed the
26092         `MonoImage *image' and `int type_num' arguments.
26093
26094         * metadata.c (mono_metadata_parse_generic_param): New static
26095         method; creates a MonoGenericParam which just contains the index.
26096         (do_mono_metadata_parse_type): Call
26097         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
26098         MONO_TYPE_MVAR.
26099
26100         * reflection.c (mono_image_typedef_or_ref): Generic type
26101         parameters may be in the same assembly, but never use a typedef
26102         for them.
26103         (mono_reflection_define_generic_parameter): We're now creating a
26104         "real" class for the type parameter; it's now safe to call
26105         mono_class_from_mono_type() on the class'es type, it'll do the
26106         right thing.
26107
26108 2003-09-16  Martin Baulig  <martin@ximian.com>
26109
26110         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
26111         `symfile->range_entry_size' and `symfile->class_entry_size' here;
26112         the `symfile' data structure must be fully initialized before it
26113         gets added to the table.
26114
26115 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
26116
26117         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
26118
26119         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
26120         class init trampolines.
26121
26122 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
26123
26124         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
26125         to the built-in profiler to turn off time and allocation profiling
26126         respectively.
26127
26128 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
26129
26130         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
26131         g_direct_equal.
26132
26133         * debug-helpers.c (mono_method_full_name): Print the wrapper type
26134         in human readable form.
26135
26136 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
26137
26138         * reflection.c icall.c: Fixed warnings.
26139
26140         * image.c (load_class_names): Use a temporary hash table to hold the
26141         namespaces in order to avoid doing many string comparisons.
26142
26143         * image.h: Fix typo.
26144
26145         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
26146         Pass NULL instead of g_direct_equal to the GHashTable constructor 
26147         since the NULL case is short-circuited inside g_hash_table_lookup, 
26148         leading to better performance.  
26149
26150         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
26151         obtain the first custom attribute for a given index. Depends on the
26152         CustomAttribute table being sorted by the parent field.
26153
26154         * reflection.c (mono_custom_attrs_from_index): Use the new function 
26155         for better performance.
26156
26157 2003-09-07  Martin Baulig  <martin@ximian.com>
26158
26159         * class.c (mono_class_init): If we're a generic instance, inflate
26160         all our methods instead of loading them from the image.
26161         (mono_class_from_generic): Set `class->methods = gklass->methods'.
26162
26163 2003-09-07  Martin Baulig  <martin@ximian.com>
26164
26165         * mono-debug-debugger.c: Added support for constructors.
26166
26167 2003-09-06  Martin Baulig  <martin@ximian.com>
26168
26169         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
26170         New interncall.
26171
26172         * reflection.c (mono_reflection_setup_generic_class): Call
26173         ensure_runtime_vtable() to create the vtable.
26174
26175 2003-09-05  Martin Baulig  <martin@ximian.com>
26176
26177         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
26178         MONO_TYPE_MVAR.
26179
26180 2003-09-04  Martin Baulig  <martin@ximian.com>
26181
26182         * reflection.c (mono_reflection_define_generic_parameter): Generic
26183         parameters start with zero.
26184
26185 2003-09-04  Martin Baulig  <martin@ximian.com>
26186
26187         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
26188
26189         * reflection.h (MonoReflectionGenericParam): New typedef.
26190         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
26191         the generic parameters from the managed TypeBuilder.
26192
26193         * reflection.c (mono_reflection_define_generic_parameter): New function.
26194         (mono_reflection_create_runtime_class): Encode generic parameters.
26195         (mono_reflection_setup_generic_class): New function; this is
26196         called after adding adding all generic params to the TypeBuilder.
26197         (encode_type): Added MONO_TYPE_VAR.
26198
26199 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
26200
26201         * class.h class.c (mono_class_needs_cctor_run): Moved this method
26202         here from the JIT.
26203
26204         * assembly.h assembly.c: Moved the AOT loading code into an assembly
26205         load hook.
26206
26207 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
26208
26209         * reflection.h reflection.c class.h class.c: Delete duplicate 
26210         definition of mono_type_get_name () from reflection.c and export the
26211         one in class.c.
26212
26213         * class.c: Class loading fixes from Bernie Solomon 
26214         (bernard@ugsolutions.com).
26215
26216         * reflection.c: Endianness fixes from Bernie Solomon 
26217         (bernard@ugsolutions.com).
26218         
26219 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
26220
26221         * assembly.h assembly.c: Define a file format version for AOT
26222         libraries.
26223         
26224         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
26225
26226         * appdomain.h (MonoJitInfo): New field to determine whenever the
26227         code is domain neutral.
26228         
26229 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
26230
26231         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
26232
26233 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
26234
26235         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
26236         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
26237         Avoid caching the result since strings must be domain specific. Fixes
26238         #48050.
26239
26240 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
26241
26242         * marshal.c (mono_marshal_init): Make this callable multiple times
26243         since it is hard to find a correct place to call it.
26244
26245         * object.c (mono_runtime_class_init): Execute static constructors in
26246         the correct appdomain.
26247
26248         * image.c (build_guid_table): Handle the case when multiple images have
26249         the same GUID.
26250
26251 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26252
26253         * icall.c: added a couple of icalls for System.Web.
26254
26255 2003-08-28  Martin Baulig  <martin@ximian.com>
26256
26257         * icall.c (ves_icall_Type_BindGenericParameters): Use
26258         `klass->generic_inst' instead of `&klass->byval_arg' in the
26259         mono_type_get_object() call.  The returned type must be
26260         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
26261
26262 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
26263
26264         * NOTES: New file.
26265
26266         * object.c (mono_class_proxy_vtable): Make it thread safe.
26267
26268         * pedump.c: Fix warning.
26269
26270         * object.c appdomain.h: Get rid of metadata_section. 
26271         It is no longer needed and it was causing deadlocks with domain->lock.
26272
26273         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
26274
26275 2003-08-26  Martin Baulig  <martin@ximian.com>
26276
26277         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
26278
26279 2003-08-26  Martin Baulig  <martin@ximian.com>
26280
26281         * pedump.c (main): Call mono_metadata_init(),
26282         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
26283         and mono_loader_init().
26284
26285 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
26286
26287         * loader.h: Add missing include to fix build.
26288
26289         * image.h: mono_image_load_references is no more.
26290
26291         * assembly.c: Reworked assembly loading to make it really thread safe.
26292         After these changes, the assembly returned by mono_assembly_open is
26293         fully initialized, i.e. all its references assemblies are loaded.
26294
26295         * assembly.c (mono_image_load_references): Renamed to 
26296         mono_assembly_load_references, and made private, since clients no
26297         longer need to call it.
26298
26299         * class.c: Removed calls to mono_assembly_load_references, since it was
26300         a source of deadlocks.
26301
26302         * loader.h loader.c class.h class.c: Protect data structures using a 
26303         new lock, the loader lock.
26304
26305         * class.c (mono_class_setup_vtable): Create temporary hash tables and
26306         GPtrArrays only when needed.
26307
26308         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
26309         into empty structures by mcs. Fixes pinvoke7.cs.
26310         
26311         * domain.c (mono_init): Call a new initialization function.
26312
26313         * appdomain.c (mono_runtime_init): Call the new initializer function
26314         of the marshal module.
26315
26316         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
26317         inserted into empty structures by mcs. Fixes pinvoke7.cs.
26318
26319         * marshal.h marshal.c: Added locks around the wrapper caches to make
26320         this module thread safe.
26321
26322         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
26323         this argument. Fixes pinvoke1.exe.
26324
26325 2003-08-25  Lluis Sanchez <lluis@ximian.com>
26326
26327         * object.h: Added call_type field to MonoMethodMessage and the corresponding
26328         enumeration of values. Removed fields to store remote call output values in
26329         MonoAsyncResult. Not needed any more.
26330         * object.c: Initialize call_type and async_result fields in mono_message_init.
26331         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
26332         dispatching the message.
26333         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
26334         async call to finish. To do it use a message with EndInvoke call type.
26335
26336 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
26337
26338         * loader.h loader.c (mono_method_hash_marhal_info): New function which
26339         determines whenever a method has marshalling info.
26340
26341 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26342
26343         * assembly.c: fix the build on windows.
26344
26345 2003-08-22 Lluis Sanchez <lluis@ximian.com>
26346
26347         * object.cs: Fixed bug #47785.
26348
26349 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
26350
26351         * string-icalls.c (StringReplace): If their are no occurances of
26352         the old string found return a reference to the supplied
26353         string. This saves some memory and matches MS behavoir.
26354         
26355 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26356
26357         * socket-io.c: fixed compilation for systems that define AF_INET6
26358         and don't define SOL_IP/SOL_IPV6.
26359
26360 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
26361
26362         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
26363         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
26364
26365         * rawbuffer.c rawbuffer.h: Make this module thread safe.
26366
26367         * domain.c: Make this module thread safe.
26368
26369         * domain.c (mono_init): Call new initialization function.
26370
26371         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
26372         reference types too. Fixes #38812.
26373
26374         * image.c (mono_image_init): Fixed warnings.
26375
26376         * class.c (mono_class_from_typeref): Handle assembly load failure
26377         correctly.
26378
26379         * appdomain.c (add_assemblies_to_domain): Handle the case when
26380         the references of an assembly are not yet loaded.
26381
26382         * metadata.c image.c assembly.c: Moved initialization of global
26383         variables to a separate function called at startup since lazy 
26384         initialization of these variables is not thread safe.
26385         
26386         * image.c assembly.c: Made this module thread safe by adding locks in 
26387         the appropriate places.
26388
26389         * domain.c (mono_init): Call the new initialization functions of the
26390         three modules.
26391
26392 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
26393
26394         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
26395           make a direct call. It is proxy's work to make the call asynchronous.
26396           mono_delegate_end_invoke(): If the targe is a proxy, just collect
26397           the return values.
26398         * object.cs: mono_method_call_message_new(): read AsyncResult and
26399           state object from parameters list, if this info is requested.
26400         * object.h: Added fields to store remote call output values in
26401           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
26402
26403 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26404
26405         * object.h: add needed fields to MonoThread.
26406         * threads.c, threads.h: allow registering a function to cleanup data
26407         allocated per thread by the JIT.
26408
26409 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26410
26411         * loader.h: portability fix by Bernie Solomon
26412         * <bernard@ugsolutions.com>.
26413
26414 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
26415
26416         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
26417         return a MonoArray. This simplifies the code and also ensures that
26418         the cache allways contains an object reference as a value.
26419
26420         * icall.c (ves_icall_get_parameter_info): Simplified using the new
26421         function.
26422
26423 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26424
26425         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
26426         fixes a problem with byte ordering when getting the address family for
26427         a socket.
26428
26429 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
26430
26431         * .cvsignore: Added monosn.
26432
26433         * reflection.h reflection.c loader.c: Added support for parameter
26434         marshalling to dynamically created types. Fixes #47295.
26435
26436 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
26437
26438         * rand.c: remove useless warnings.
26439
26440 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
26441
26442         * class.c: implemented ldtoken for methods and fieldrefs.
26443
26444 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26445
26446         * threadpool.c: when mono_async_invoke was called, no one took care of
26447         monitoring the queue. So if the method invoked took some time and we
26448         got new async invoke requests after 500 ms (the thread created waited
26449         that long in WaitForSingleObject), the new async invoke was not called
26450         until the previous one finished.
26451
26452         This is fixed now. Thanks to Totte for helping with it.
26453
26454 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26455
26456         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
26457
26458 2003-08-11  Martin Baulig  <martin@ximian.com>
26459
26460         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
26461
26462 2003-08-06  Martin Baulig  <martin@ximian.com>
26463
26464         * mono-debug-debugger.c: Added support for static fields,
26465         properties and methods.
26466
26467 2003-08-06  Martin Baulig  <martin@ximian.com>
26468
26469         * mono-debug-debugger.c: Don't store the MonoString's vtable to
26470         make this work for applications with multiple application domains.
26471
26472 2003-08-04  Martin Baulig  <martin@ximian.com>
26473
26474         * mono-debug-debugger.c: Completely reworked the type support; the
26475         most important thing is that we're now just using one single
26476         `MonoType' instance per type.
26477
26478 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
26479
26480         * mono-endian.h, mono-endian.c, icall.c: Added icall
26481         ves_icall_System_Double_AssertEndianity to assert double word endianity
26482         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
26483
26484 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26485
26486         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
26487         support, icalls and fixes.
26488
26489 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
26490
26491         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
26492         classes that are a punctuation character in .NET is not the same a
26493         g_unichar_ispunct.
26494
26495 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26496
26497         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
26498
26499 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
26500
26501         * icall.c: Add new MemCopy internalcall.
26502         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
26503         Simplified code; It is not necessary to handle all the cases here,
26504         as the C# code takes care of it.  Only handle the case of the name
26505         resource embedded into the assembly.
26506
26507         Changed signature to return the data pointer and the size of the
26508         data. 
26509
26510 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
26511
26512         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
26513         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
26514
26515 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
26516
26517         * socket-io.c: ignore EINTR error in select.
26518
26519 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26520
26521         * class.h, class.c: removed unused subclasses field in MonoClass.
26522
26523 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
26524
26525         * icall.c: improve fix of get_base_definition(). If the parent class
26526           doesn't have the mehod, look at the parent of the parent.
26527         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
26528           to check if a parameter is an in or out parameter
26529           (PARAM_ATTRIBUTE_IN is not set by default).
26530           mono_method_return_message_restore(): Use mono_class_value_size to
26531           get the size of a value type. mono_type_stack_size (parameterType)
26532           does not return the correct value if parameterType is byRef.
26533           mono_load_remote_field(), mono_load_remote_field_new(),
26534           mono_store_remote_field(), mono_store_remote_field_new():
26535           raise exception if the remote call returns an exception.
26536
26537 2003-07-28  Martin Baulig  <martin@ximian.com>
26538
26539         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
26540         method.  This is a wrapper around mono_runtime_invoke() which
26541         boxes the instance object if neccessary.
26542
26543 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26544
26545         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
26546         metadata.h, row-indexes.h, verify.c: first cut of generics support.
26547
26548 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26549
26550         * icall.c: disable mcs bug workaround.
26551
26552 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
26553
26554         * object.c (mono_runtime_class_init): Take the metadata_section
26555         mutex before obtaining the domain mutex.
26556
26557         * appdomain.h: Added definition of metadata_section mutex here. 
26558
26559         * object.c: define metadata_mutex here.
26560
26561 2003-07-24  Ravi Pratap  <ravi@ximian.com>
26562
26563         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
26564         fixed.
26565
26566 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
26567
26568         * reflection.c: Fix bug #46669
26569
26570 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26571
26572         * exception.c:
26573         * exception.h:
26574         * icall.c:
26575         * object.h: fill in the type name for TypeLoadException.
26576
26577 2003-07-23  Ravi Pratap  <ravi@ximian.com>
26578
26579         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
26580         relationship between TypeBuilders while compiling corlib) and bug
26581         45993 (Array types returned from the runtime while compiling
26582         corlib were from the loaded corlib).
26583
26584 2003-07-22  Martin Baulig  <martin@ximian.com>
26585
26586         * mono-debug-debugger.c: Reworked the type support a bit more;
26587         distinguish between types and classes.
26588
26589 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
26590
26591         * icall.c: add IsArrayImpl icall.
26592
26593 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
26594
26595         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
26596         initializing real_size only once. Also fix bug #46602.
26597
26598 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
26599
26600         * object.c: Renamed mono_metadata_section to metadata_section.
26601
26602 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
26603
26604         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
26605           empty array if the type is an array. Fixed.
26606           ves_icall_MonoMethod_get_base_definition: if the base method
26607           is abstract, get the MethodInfo from the list of methods of
26608           the class.
26609         * reflection.c: ParameterInfo.PositionImpl should be zero-based
26610           and it was 1-based. Fixed in mono_param_get_objects.
26611
26612 2003-07-20  Martin Baulig  <martin@ximian.com>
26613
26614         * mono-debug.h: Set version number to 31.
26615         (mono_debug_init): Added `MonoDomain *' argument.
26616
26617         * mono-debug-debugger.c: Reworked the type support; explicitly
26618         tell the debugger about builtin types; pass the `klass' address to
26619         the debugger.
26620
26621 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
26622
26623         * image.c: Allow new metadata tables to be loaded without a
26624         warning. Also update the warning message to give the new constant value.
26625                 
26626 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
26627
26628         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
26629         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
26630         array type representation changes.
26631
26632 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26633
26634         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
26635         on Environment.Exit () call.
26636
26637 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
26638
26639         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
26640         requires a matching corlib.
26641
26642 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
26643
26644         * Changelog: My editor decided to add a CR to each line. Sorry about that.
26645           Committed again without the CRs.
26646         
26647 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
26648
26649         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
26650           getting it from the "this" socket instance. Did not work
26651           if the socket is a subclass of Socket.
26652           Also fixed bug #35371.
26653
26654 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26655
26656         * metadata.c: fixed size for TypedByRef.
26657         * loader.c: when searching for a method, consider the vararg amrker.
26658         * unicode.c, decimal.c: constify some arrays.
26659
26660 2003-07-15  Dick Porter  <dick@ximian.com>
26661
26662         * socket-io.c: Fixed compilation for gcc < 3.2.
26663
26664         Fixed compilation for machines that don't have AF_INET6 (thanks to
26665         Bernie Solomon <bernard@ugsolutions.com> for that part.)
26666
26667         Fixed compile warnings.
26668         
26669         Fixed formatting and line endings.
26670
26671 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
26672
26673         * socket-io.h:
26674         * socket-io.c: Added IPv6 support.
26675
26676 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
26677
26678         * class.c (mono_class_is_assignable_from): New function to implement
26679         the is_assignable_from logic. Used by mono_object_isinst, 
26680         Type::IsAssignableFrom () and the interpreter.
26681
26682         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
26683         Object, even interfaces.
26684         
26685         * object.c (mono_object_isinst): Implement in terms of 
26686         is_assignable_from.
26687
26688         * icall.c (ves_icall_type_is_assignable_from): New icall.
26689
26690 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
26691
26692         * domain.c (foreach_domain): fix compiler warning.
26693
26694 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
26695
26696         * image.c (load_metadata_ptrs): use g_strndup because strndup is
26697         not available on all plattforms
26698
26699 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
26700
26701         * image.h image.c: Store the metadata version string in MonoImage.
26702         * icall.c: New icall to retrieve the image version.
26703         * reflection.c (create_dynamic_image): Fill in the image version field
26704         * reflection.c (build_compressed_metadata): Use the image version
26705         from the image structure.
26706
26707 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26708
26709         * appdomain.c: modified comment.
26710         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
26711         That will be its last iteration when mono_gc_cleanup is called from
26712         mono_runtime_cleanup and before the domain is unloaded.
26713
26714         Fixes bug #45962.
26715
26716 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
26717
26718         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
26719         attributes.
26720
26721 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26722
26723         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
26724         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
26725         Bernie Solomon <bernard@ugsolutions.com>.
26726
26727 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26728
26729         * object.c, object.h: provide mono_object_new_fast() for faster
26730         allocation in some special cases.
26731
26732 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26733
26734         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
26735         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
26736
26737 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
26738
26739         * threadpool.c: fix leaks.
26740
26741 2003-07-01  Dick Porter  <dick@ximian.com>
26742
26743         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
26744         using MonoGHashTables.  Fixes threadpool bug posted to list.
26745
26746 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
26747
26748         * image.h, image.c: added support to load an assembly from a byte array.
26749         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
26750         assembly bundle support.
26751
26752 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
26753
26754         * threadpool.c (mono_thread_pool_add): keep a reference to the
26755         AsyncResult to prevent GC
26756
26757 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26758
26759         * class.c: leak fix.
26760
26761 2003-06-25  Dick Porter  <dick@ximian.com>
26762
26763         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
26764         for the async object, the WaitHandle object will close the handle.
26765         Fixes bug 45321.
26766
26767 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26768
26769         * class.c: in mono_array_class_get (), lookup from the hash with the
26770         same type we insert: this works around a bug in
26771         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
26772         lluis. The real fix will have to wait for after the release.
26773
26774 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26775
26776         * icall.c: fix memory leak when getting type members.
26777
26778 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26779
26780         * reflection.c: added more pubtoken special cases.
26781
26782 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
26783
26784         * class.c: handle field offset correctly when class size
26785         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
26786
26787 2003-06-20  Martin Baulig  <martin@ximian.com>
26788
26789         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
26790         *image' field.
26791
26792 2003-06-20  Martin Baulig  <martin@ximian.com>
26793
26794         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
26795
26796 2003-06-20  Martin Baulig  <martin@ximian.com>
26797
26798         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
26799         just distinguish between variables in registers and variables at
26800         an offset relative to a register.
26801
26802 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26803
26804         * icall.c: #ifdef out latest changes until mcs is fixed.
26805
26806 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26807
26808         * icall.c: return members in metadata order.
26809
26810 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26811
26812         * icall.c: avoid infinite loop in GetTimeZoneData.
26813
26814 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26815
26816         * icall.c: added Marshal.Prelink/All icalls.
26817
26818 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26819
26820         * object.c, object.h: fix warnings and do some overflow checking
26821         when creating arrays.
26822
26823 2003-06-17  Dick Porter  <dick@ximian.com>
26824
26825         * file-io.h:
26826         * file-io.c: File attributes need to be tweaked slightly when
26827         passed from the managed to the w32 world.
26828
26829 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26830         * profiler.h profiler-private.h profiler.c: Rework last patch
26831         based on suggestion by Paolo.
26832         
26833 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26834
26835         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
26836         instruction level coverage data collection.
26837         * profiler.h profiler.c (: Added new callback function which can be
26838         used by the profiler to limit which functions should have coverage
26839         instrumentation.
26840         * profiler.c (mono_profiler_load): Call g_module_build_path to
26841         generate the file name of the profiler library.
26842
26843 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26844
26845         * profiler.c, profiler.h, profiler-private.h: added basic block 
26846         coverage profiling API.
26847
26848 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
26849
26850         * reflection.c (mono_reflection_create_runtime_class): Add support
26851         for events in dynamically generated code.
26852
26853         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
26854         not allocated.
26855
26856 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26857
26858         * icall.c: when getting timezone info, return reasonable values if we
26859         can't get the actual data.
26860
26861 2003-06-14  Dick Porter  <dick@ximian.com>
26862
26863         * threads.c (start_wrapper): Remove the reference to the thread
26864         object in the TLS data, so the thread object can be finalized.
26865         This won't be reached if the thread threw an uncaught exception,
26866         so those thread handles will stay referenced :-( (This is due to
26867         missing support for scanning thread-specific data in the Boehm GC
26868         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
26869
26870 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
26871
26872         * reflection.c: ensure streams and tables are first allocated with
26873         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
26874
26875 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26876
26877         * icall.c: fixed GetElementType for byrefs (bug# 44792).
26878
26879 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
26880
26881         * reflection.c (mono_reflection_create_runtime_class): Add support for
26882         properties to dynamically created classes.
26883         * reflection.c: Fix a few places where non-MonoObjects were inserted
26884         into the tokens hashtable.
26885
26886 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26887
26888         * object.c: some support to handle out of memory exceptions.
26889
26890 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26891
26892         * marshal.c (mono_marshal_get_native_wrapper): support reference
26893         return types
26894
26895 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26896
26897         * object.h, object.c: more portability stuff from Bernie Solomon.
26898         Unexport mono_object_allocate(). Added mono_object_unbox ().
26899         Set exitcode when an unhandled exception is thrown.
26900
26901 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26902
26903         * marshal.c (mono_marshal_get_native_wrapper): use custom
26904         marshaler for return types.
26905
26906 2003-06-10  Dick Porter  <dick@ximian.com>
26907
26908         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26909         ip_mreq is available
26910
26911 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26912
26913         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26914         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26915         by Bernie Solomon <bernard@ugsolutions.com>.
26916
26917 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26918
26919         * gc.c (mono_gc_init): Avoid error message on shutdown when
26920         GC_DONT_GC=1 is used.
26921
26922         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26923         New icall to return the GUID of a module.
26924
26925 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26926
26927         * class.c: ensure instance size always includes the parent's size
26928         even whem class size is set explicitly (fixes bug#44294).
26929
26930 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26931
26932         * profiler.h, profiler.c: made the simple profiler thread-safe,
26933         get more accurate timing info. Allow the loading of an
26934         externally-developed profiler module.
26935
26936 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26937
26938         * marshal.c (mono_marshal_get_native_wrapper): improved
26939         class/byref arguments.
26940         (mono_marshal_get_native_wrapper): better string marshaling support.
26941
26942 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26943
26944         * class.c: ensure .pack and .size are handled correctly and
26945         simplified layout of static fields.
26946
26947 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26948
26949         * appdomain.c
26950         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26951
26952         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26953         current directory (fix bug 44008)
26954
26955 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26956
26957         * marshal.c (mono_marshal_get_native_wrapper): started support for
26958         custom marshalers.
26959         (mono_delegate_to_ftnptr): consider marshalling specifications
26960
26961 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26962
26963         * reflection.c, reflection.h: emit custom marshal info.
26964
26965 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26966
26967         * object.c: free the GError.
26968         * icall.c: added CloseEvent_internal.
26969         * threads.[ch]:
26970         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26971         call.
26972
26973 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26974
26975         * loader.c (mono_method_get_signature): Add support for dynamic
26976         assemblies.
26977
26978 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26979
26980         * reflection.c: fixed bug #43905.
26981
26982 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26983
26984         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26985         handling TypedReference and ArgIterator.
26986         * loader.c, loader.h: added function to get signature at call site.
26987
26988 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26989
26990         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26991         data readonly. Buglets and warning fixes. Some MethodSpec support.
26992
26993 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26994
26995         * class.h, class.c, object.c: remove relative numbering support.
26996
26997 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26998
26999         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
27000         free the string, until we get a chance to fix Gtk#
27001
27002 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27003
27004         * marshal.c: revert last patch.
27005
27006 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
27007
27008         * icall.c: updates for new mono_class_vtable() not calling
27009         the type constructor anymore.
27010
27011 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
27012
27013         * object.h, object.c: separate vtable creation from type
27014         initialization. Make running the .cctor thread safe.
27015
27016 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
27017
27018         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
27019
27020 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
27021
27022         * loader.c (mono_get_method): consider calling convention
27023
27024 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
27025
27026         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
27027         to return the invisible global type for a module.
27028
27029         * reflection.c (mono_image_build_metadata): Emit global fields too.
27030
27031 2003-05-20  Peter Williams  <peterw@ximian.com>
27032
27033         * loader.c (mono_lookup_internal_call): Add a few newlines.
27034
27035 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
27036
27037         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
27038         literal strings.
27039
27040         * appdomain.c (set_domain_search_path): Recalculate search path when
27041         AppDomainSetup.PrivateBinPath changes.
27042
27043         * object.c (mono_class_compute_gc_descriptor): It turns out some
27044         parts of the class libs (like System.Thread) holds pointers to
27045         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
27046         to treat native int a pointer type here.
27047         
27048 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
27049
27050         * appdomain.h, domain.c: add hashtable for jump target resolution.
27051
27052 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
27053
27054         * reflection.h reflection.c icall.c: Added new icalls 
27055         GetManifestResourceInfoInternal, GetModulesInternal and support
27056         infrastructure.
27057
27058 2003-05-16  Dick Porter  <dick@ximian.com>
27059
27060         * icall.c:
27061         * file-io.h:
27062         * file-io.c: Implement System.IO.MonoIO::GetTempPath
27063
27064 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
27065
27066         * object.c: mono_store_remote_field: little fix to previous patch.
27067
27068 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
27069
27070         * class.c: add constructors to array classes.
27071         * icall.c: special case array construction for InternalInvoke (),
27072
27073 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
27074
27075         * class.h class.c reflection.c object.c: Added support for field
27076         defaults in dynamically generated classes.
27077
27078 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
27079
27080         * reflection.c: properly encode charset for ddlimport.
27081
27082 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
27083
27084         * threads.c: allow compiling without GC.
27085
27086 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
27087
27088         * appdomain.h, object.c, object.h, threads.c, threads.h: added
27089         handling of thread static data.
27090
27091 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
27092
27093         * reflection.h, reflection.c: added mono_custom_attrs_free ().
27094
27095 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
27096
27097         * class.c (mono_array_class_get): always set the serializable flags
27098         (mono_array_class_get): always set the SEALED attribute for array types
27099
27100 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
27101
27102         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
27103         attributes (fix for bug 42021).
27104
27105 2003-05-12  Dick Porter  <dick@ximian.com>
27106
27107         * gc.c: Don't run finalizers when the finalizer thread is
27108         finishing up, because the default domain has already been
27109         destroyed.
27110
27111 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
27112
27113         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
27114         value is null, we should throw an exception.   This is slightly
27115         different than the other conventions used for the constructor.
27116
27117 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27118
27119         * socket-io.c: fixed windows build.
27120
27121 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27122
27123         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
27124
27125 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
27126
27127         * object.c (mono_string_new_wrapper): Compatibility fix for MS
27128         compilers.
27129
27130 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
27131
27132         * class.c (mono_class_layout_fields): Add experimental GC aware
27133         auto layout facility. Requires class library changes to work correctly.
27134
27135         (mono_class_setup_vtable): Avoid overriding explicit interface
27136         method implementations. Fixes iface3.exe test.
27137
27138         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
27139         object reference.
27140         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
27141         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
27142
27143         * metadata.h: Add new type classification macro which determines
27144         whenever the type holds an object reference.
27145
27146 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
27147
27148         * marshal.c (mono_marshal_get_native_wrapper): cleanups
27149
27150 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
27151
27152         * gc.c (finalizer_thread): Work around a GC bug.
27153
27154 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
27155
27156         * marshal.c (emit_struct_conv): allow unions
27157
27158         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
27159
27160 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
27161
27162         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
27163
27164 2003-05-06  Martin Baulig  <martin@ximian.com>
27165
27166         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
27167
27168 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27169
27170         * socket-io.c:
27171         (Select_internal): allow NULLs, don't create arrays if not needed.
27172         Coupled with Socket.cs changes.
27173
27174         * threadpool.c:
27175         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
27176         register a finalizer for it that will close the semaphore handle. This
27177         fixes the leak and make Lupus' test run with > 4080 loops.
27178
27179 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
27180
27181         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
27182         Jerome Laban (bug #42287)
27183
27184 2003-05-02  Martin Baulig  <martin@ximian.com>
27185
27186         * debug-mono-symfile.h
27187         (MonoSymbolFile): Moved declaration into mono-debug.h.
27188         (MonoDebugMethodJitInfo): Likewise.
27189         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
27190         argument.
27191         (_mono_debug_address_from_il_offset): Take a
27192         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
27193
27194         * mono-debug.h
27195         (MonoDebugDomainData): New struct.
27196         (mono_debug_get_domain_data): New function.
27197         (mono_debug_add_method): Take an additional `MonoDomain *'
27198         argument.
27199         (mono_debug_source_location_from_address): Likewise.
27200         (mono_debug_il_offset_from_address): Likewise.
27201         (mono_debug_address_from_il_offset): Likewise.
27202
27203 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
27204
27205         * reflection.c: one more check for null type in custom attrs.
27206
27207 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27208
27209         * reflection.c: avoid warning (comparison is always false due to limited
27210         range of data type).
27211
27212 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27213
27214         * icall.c: throw an exception in Type.GetField if the argument 'name'
27215         is NULL.
27216
27217 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
27218
27219         * reflection.c: fixed handling of enums in named arguments to custom
27220         attributes (bug #42123).
27221
27222 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
27223
27224         * reflection.c: use the right array element type and handle
27225         a null for a Type argument, too.
27226
27227 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
27228
27229         * reflection.c: handle arrays as arguments to custom attributes.
27230
27231 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
27232
27233         * reflection.c: handle a string value in a custom attr
27234         ctor that takes an object.
27235
27236 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
27237
27238         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
27239         (fix bug #42063)
27240
27241 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
27242
27243         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
27244
27245 2003-04-27  Martin Baulig  <martin@ximian.com>
27246
27247         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
27248         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
27249         MONO_DEBUGGER_EVENT_BREAKPOINT.
27250         (mono_breakpoint_trampoline_code): Removed.
27251         (mono_debugger_event_handler): The last argument is now a
27252         `guint32'.
27253         (mono_debugger_insert_breakpoint_full): Removed the
27254         `use_trampoline' argument.
27255         (mono_debugger_method_has_breakpoint): Likewise.
27256         (mono_debugger_trampoline_breakpoint_callback): Renamed to
27257         mono_debugger_breakpoint_callback(); take the method and
27258         breakpoint number as arguments.
27259
27260 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
27261
27262         * metadata.c: fix off by one when loading parameters attributes.
27263
27264 2003-04-24  Martin Baulig  <martin@ximian.com>
27265
27266         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
27267
27268 2003-04-24  Martin Baulig  <martin@ximian.com>
27269
27270         * mono-debug-debugger.c: Moved all code which interacts with the
27271         Mono Debugger here.
27272
27273         * debug-mono-symfile.c: This code now just deals with the symbol
27274         file itself, the debugger code is now in mono-debug-debugger.c.
27275
27276 2003-04-23  Martin Baulig  <martin@ximian.com>
27277
27278         * mono-debug.c (mono_debug_source_location_from_il_offset):
27279         New method; like mono_debug_source_location_from_address(), but
27280         takes an IL offset instead of a machine address.
27281
27282 2003-04-23  Martin Baulig  <martin@ximian.com>
27283
27284         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
27285         `line' field; this is now computed by the debugger.
27286
27287 2003-04-23  Martin Baulig  <martin@ximian.com>
27288
27289         * mono-debug.[ch]: New files.  This is the new debugging interface.
27290
27291         * mono-debug-debugger.[ch]: New files.  Moved all code which
27292         interacts with the Mono Debugger here.
27293
27294 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
27295
27296         * domain.c (mono_init): initialize mono_defaults.monitor_class
27297
27298 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
27299
27300         * reflection.c (method_encode_code): Add a spicy exception to help
27301         future compiler authors.
27302
27303 2003-04-21  Martin Baulig  <martin@ximian.com>
27304
27305         * icall.c
27306         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27307         Make this work with relative pathnames; g_filename_to_uri() needs
27308         an absolute filename.
27309
27310 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
27311
27312         * icall.c: Track name changes in Object and ValueType.
27313
27314 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
27315
27316         * metadata.c (mono_type_stack_size): size should be a multiple of
27317         sizeof (gpointer)
27318
27319 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27320
27321         * gc.c:
27322         (internal_domain_finalize): moved into mono_domain_finalize. No need
27323         to create another thread because the finalizers will be run in the
27324         finalizer thread.
27325         
27326         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
27327         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
27328         to be run (MS does this too).
27329
27330 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
27331
27332         * object.c (mono_class_compute_gc_descriptor): Update comment.
27333
27334         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
27335
27336         * image.h: Add synchronized wrapper cache.
27337
27338         * image.c (do_mono_image_open): Initialize cache.
27339
27340         * reflection.c (create_dynamic_mono_image): Initialize cache.
27341
27342 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27343
27344         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
27345         ves_icall_System_Buffer_ByteLengthInternal.
27346
27347 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
27348
27349         * reflection.c: setup klass->nested_in earlier. Allow
27350         a dash in the assembly name.
27351
27352 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
27353
27354         * metadata.c (mono_type_to_unmanaged): dont access
27355         type->data.klass for MONO_TYPE_OBJECT
27356         (mono_type_to_unmanaged): consider System.Delegate class
27357
27358 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
27359
27360         * class.c: just setup supertypes in the proper place instead of
27361         initializing the full element class for arrays.
27362
27363 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
27364
27365         * class.c: ensure the element class of arrays is initialized.
27366         Setup the supertype info for array classes, too.
27367
27368 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
27369
27370         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
27371
27372 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27373
27374         * Makefile.am: re-added -m option when running cygpath. This way,
27375         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
27376         separator.
27377         * mono-config.c: same codepath for locating mono config file for WIN32
27378         and the rest.
27379         * assembly.c: if mono_assembly_setrootdir is called, don't override
27380         the value set.
27381
27382 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27383
27384         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
27385         MONO_ASSEMBLIES variable.
27386
27387 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
27388
27389         * icall.c: added Assembly::GetNamespaces() icall.
27390
27391 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27392
27393         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
27394
27395 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
27396
27397         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
27398         * object.c: fixed bug in the construction of vtable for proxies
27399
27400 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
27401
27402         * object.c (mono_array_new): Mark mono_array_new as an icall.
27403
27404 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27405
27406         * class.c: fixed test for public method when overriding interfaces.
27407         Closes bug #40970.
27408
27409 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
27410
27411         * appdomain.h, domain.c: added mono_domain_foreach() to
27412         be able to access the currently loaded appdomains.
27413         * object.c: make string interning work across sppdomains.
27414         Mark some functions for use as icalls.
27415
27416 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
27417
27418         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
27419
27420         * reflection.h reflection.c: Allocate long living data using 
27421         GC_MALLOC_ATOMIC so the collector does not need to scan it.
27422
27423         * reflection.c: Double the allocation size in streams instead of
27424         increasing it, to prevent unneccesary copying on large assemblies.
27425         
27426         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
27427         creation if the assembly does not have the Run flag set.
27428
27429 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
27430
27431         * class.h: avoid the C++ keywords in header files (Jerome Laban
27432         spotted and fixed this).
27433
27434 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27435
27436         * object.c:
27437         (mono_unhandled_exception): fill in the arguments for the
27438         UnhandledException event. Only trigger that event for the default
27439         domain (as MS does).
27440
27441 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
27442
27443         * object.c: Improve typed allocation stuff based on suggestions from
27444         Paolo. Also turn it on if the GC library supports it.
27445
27446 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
27447
27448         * object.c object.h class.h: Added experimental typed allocation
27449         facility using the interfaces in gc_gcj.h.
27450
27451         * os/gc_wrapper.h: Added new include files.
27452         
27453 2003-04-03  Martin Baulig  <martin@ximian.com>
27454
27455         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
27456         which is not yet enabled by default.
27457
27458         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
27459         functions.
27460         (mono_gc_lock, mono_gc_unlock): New static functions.
27461
27462         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
27463         functions; stop/start the world for the garbage collector.  This
27464         is using the windows API; we need to complete the SuspendThread()/
27465         ResumeThread() implementation in the io-layer to make this work on Unix.
27466         (mono_gc_push_all_stacks): New public function; tells the garbage
27467         collector about the stack pointers from all managed threads.
27468
27469 2003-04-03  Martin Baulig  <martin@ximian.com>
27470
27471         * object.h (MonoThread): Added `gpointer stack_ptr'.
27472
27473         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
27474
27475 2003-04-03  Martin Baulig  <martin@ximian.com>
27476
27477         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
27478
27479 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
27480
27481         * reflection.c (typebuilder_setup_fields): Initialize field.first and
27482         field.last.
27483
27484 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
27485
27486         * loader.c (mono_lookup_internal_call): Report the corlib that is
27487         out of sync.
27488
27489 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
27490
27491         * icall.c (ves_icall_type_GetTypeCode): fixed check for
27492         System.DBNull (it's class not valuetype).
27493
27494 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
27495
27496         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
27497         if the array method was already assigned a token (fixes bug#40646).
27498
27499 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
27500
27501         * reflection.c (mono_reflection_get_type): Attempt type resolve even
27502         if no assembly is given.
27503
27504 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
27505
27506         * metadata.h: Added the new tables.
27507
27508         * row-indexes.h: Added definitions for new tables.
27509
27510         * metadata.c: Add schemas for new tables, and add support for
27511         computing the sizes of them.
27512
27513         * class.c: Update for handling the new type cases.
27514
27515 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
27516
27517         * metadata.h (MONO_TYPE_IS_VOID): new macro
27518
27519 2003-03-31  Martin Baulig  <martin@ximian.com>
27520
27521         * threads.h (MonoThreadCallbacks): Added `thread_created'.
27522
27523         * threads.c (mono_thread_new_init): Call `thread_created' in the
27524         mono_thread_callbacks.
27525
27526 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
27527
27528         * loader.h: added marshalbyrefobject_class to mono_defaults
27529         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
27530         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
27531           generation of output parameters.
27532           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
27533         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
27534           contextbound and the target object belongs to the context of the caller.
27535         * object.h: added context and unwrapped_server variables in MonoRealProxy.
27536         * object.c: Implemented support for interfaces and abstract classes
27537           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
27538           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
27539
27540 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
27541
27542         * class.h class.c (mono_class_is_subclass_of): New function.
27543         
27544         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
27545         routines for most common case (calls from ArrayList::ToArray).
27546
27547         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
27548         routine so programs which call Environment::Exit() can be profiled.
27549
27550         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
27551         Added MONO_ARCH_SAVE_REGS.
27552
27553         * icall.c (ves_icall_type_is_subtype_of): Use new function.
27554
27555 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
27556
27557         * blob.h: Add a couple of new MonoType types definitions.
27558
27559         * tabledefs.h: Add a couple of new call convs.
27560
27561 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
27562
27563         * reflection.h (MonoReflectionDynamicAssembly): track changes in
27564         the layout of the class.
27565
27566         * reflection.c (alloc_table): double the size on overflow to avoid
27567         unnecessary copying.
27568
27569         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
27570         avoid filling out metadata tables and blobs. Also set mb->ilgen to
27571         null so it can be garbage collected.
27572         
27573 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
27574
27575         * reflection.c (mono_reflection_get_type): Return the resolved type
27576         only if it is in the assembly we searched.
27577
27578         * reflection.c (ensure_runtime_vtable): Initialize method slots.
27579
27580         * class.c (mono_class_setup_vtable): Set the slot of the overriding
27581         method.
27582
27583 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27584
27585         * appdomain.c:
27586         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
27587         the right one is 'file:///blah', but MS allows it.
27588         * assembly.c:
27589         (mono_assembly_open): allow 'file://blah'
27590
27591         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
27592
27593 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
27594
27595         * socket-io.c: fixes bug #40310.
27596
27597 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
27598
27599         * reflection.c (mono_reflection_parse_type): handle deeply nested
27600         types correctly.
27601
27602         * reflection.c (mono_image_create_token): Use unique token values
27603         since they will be put into a hash table.
27604
27605         * class.c (mono_class_setup_vtable): If a method occurs in more than
27606         one place in the vtable, and it gets overriden, then change the
27607         other occurances too.
27608
27609         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
27610         object as return type.
27611
27612 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27613
27614         * icall.c: Deleted "ToString" implementation for double and float
27615         because they are full implemented in managed code.
27616
27617 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27618
27619         * reflection.c, reflection.h: implemented and exported functions
27620         to retrieve info about custom attributes.
27621
27622 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27623
27624         * appdomain.c: moved Uri handling to assembly.c
27625         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
27626         work when using a file Uri in *nix and windows.
27627
27628         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
27629         GetReferencedAssemblies.
27630
27631 2003-03-18  Dick Porter  <dick@ximian.com>
27632
27633         * icall.c: Rename a couple of internal calls
27634
27635         * threads.c: Set the thread state to Stopped when a thread exits.
27636         Fixes bug 39377.
27637
27638 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
27639
27640         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
27641         New icall.
27642
27643         * object.c (mono_class_vtable): fix warning.
27644
27645 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
27646
27647         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
27648
27649         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
27650         memory.
27651         (method_encode_clauses): Create exception info structures in the right
27652         order.
27653         (mono_reflection_setup_internal_class): Initialize supertypes field.
27654
27655         * class.c object.c: Handle interfaces which implement other interfaces 
27656         correctly.
27657
27658         * class.h class.c: Move the supertypes array initialization code into 
27659         a separate function so it can be used for dynamic types too. Also call
27660         it earlier, in mono_class_init(), since it can be used before the
27661         type is initialized.
27662
27663 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27664
27665         * Makefile.am:
27666         * assembly.c:
27667         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
27668
27669         * appdomain.c:
27670         * appdomain.h:
27671         * marshal.c:
27672         * object.c: remove warnings.
27673
27674 2003-03-13  Martin Baulig  <martin@ximian.com>
27675
27676         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
27677         (MonoDebugLexicalBlockEntry): New types.
27678
27679         * debug-mono-symfile.c
27680         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
27681
27682 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27683
27684         * process.c: ret can be any non-zero value accroding to MS doc.
27685
27686 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
27687
27688         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
27689         fixing a warning for a miss-used prototype, would have cause
27690         random memory corruption.
27691
27692 2003-03-07  Martin Baulig  <martin@ximian.com>
27693
27694         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
27695         getting really annoying ....
27696
27697 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
27698
27699         * reflection.c (fixup_method): added support for array methods.
27700
27701 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
27702
27703         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
27704         (pointed out by Michael Adams).
27705
27706 2003-03-04  Dick Porter  <dick@ximian.com>
27707
27708         * icall.c: Temporarily reverted the Double and Single ToString()
27709         change, because it broke nunit.
27710
27711 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
27712
27713         * object.h, threads.h: make include files compatible with C++
27714         (patch by Jerome Laban <jlaban@wanadoo.fr>).
27715
27716 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27717
27718         * icall.c: Erased ToString helper functions for Double and Single.
27719         Now, that implementations ar all in managed code (Double and Single
27720         Formatters).
27721
27722 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
27723
27724         * appdomain.c: Added method for initializing the default context of
27725         a domain. Added internal call for getting the default context.
27726         * appdomain.h: Added context variable in MonoDomain struct.
27727         * domain.c: mono_domain_set also sets the default context of the domain
27728         * icall.c: Mapped internal method InternalGetDefaultContext.
27729         * object.c: mono_object_get_virtual_method returns always a remoting
27730         wrapper if the object is a transparent proxy.
27731         mono_runtime_invoke_array: when creating an object by calling the
27732         constructor, if the created object is a proxy, then the constructor should
27733         be called using the a remoting wrapper.
27734
27735 2003-03-03  Dick Porter  <dick@ximian.com>
27736
27737         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
27738         variable so it compiles on solaris.  Problem spotted by
27739         Christopher Taylor <ct@cs.clemson.edu>
27740
27741 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27742
27743         * appdomain.c:
27744         (get_info_from_assembly_name): don't leak value.
27745
27746         * icall.c:
27747         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
27748         result.
27749
27750 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
27751
27752         * assembly.c: export mono_image_load_references ().
27753         * class.c: handle function pointers. mono_class_from_name() now
27754         supports nested type names directly.
27755
27756 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
27757
27758         * reflection.h reflection.c: Encode already created dynamic methods 
27759         and fields correctly as a DEF instead of a REF.
27760
27761         * reflection.c: Get rid of the force_ref argument to 
27762         mono_image_typedef_or_ref since it was wrong in the first place.
27763
27764         * string-icalls.c: add error checking to string constructors according
27765         to the MSDN docs.
27766
27767         * reflection.c: Emit types in the order their TypeBuilders were 
27768         created. Previously, a new table index was assigned to each type before
27769         the tables were emitted. This was wrong because the signature blob
27770         might already refer to a type by its original table index.
27771
27772 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
27773
27774         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
27775         change.
27776         
27777 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27778
27779         * Makefile.am: make assemblies dir have \ instead of / on windows.
27780
27781 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
27782
27783         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
27784         iterate over the NESTEDCLASS table using a linear search since the
27785         table is not guaranteed to be sorted by the secondary key.
27786
27787         * class.c (mono_class_create_from_typedef): fixed up call to
27788         mono_metadata_nesting_typedef.
27789         
27790 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
27791
27792         * marshal.c (mono_string_to_byvalstr): clear the memory as
27793         suggested by Jerome Laban <jlaban@wanadoo.fr>
27794
27795 2003-02-26  Dick Porter  <dick@ximian.com>
27796
27797         * process.c: Cope with padding in .rsrc blocks
27798
27799 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27800
27801         * metadata.h: reverted the filter_len change, it breaks reflection
27802         
27803 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27804
27805         * metadata.h: added a new field to store the filter_len
27806         
27807
27808 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
27809
27810         * reflection.c: handle custom attributes for types and members
27811         created with Reflection.Emit (bug#38422).
27812
27813 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
27814
27815         * reflection.c: define RTSpecialName automatically for constructors for
27816         compatibility with MS.NET.
27817
27818         * reflection.c (mono_reflection_create_runtime_class): initialize
27819         nested_in field of dynamically created classes.
27820
27821 2003-02-22  Martin Baulig  <martin@ximian.com>
27822
27823         * debug-mono-symfile.h: Incremented version number.
27824
27825 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27826
27827         * object.h icall.c process.c: fix warnings.
27828
27829 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27830
27831         * appdomain.h appdomain.c:
27832         (mono_domain_try_type_resolve): split the 
27833         name_or_tb argument into a name and a tb argument.
27834         (mono_domain_has_type_resolve): new function to check whenever the
27835         application has registered a TypeResolve event handler.
27836         
27837         * icall.c reflection.h reflection.c: move the type resolve logic into
27838         mono_reflection_get_type () so it will be invoked when 
27839         Assembly::GetType () is called.
27840
27841         * reflection.c:
27842         (mono_reflection_get_type): renamed to get_type_internal.
27843         (mono_reflection_get_type): fixed type name generation so it works 
27844         for nested types too.
27845         (mono_reflection_get_type): call has_type_resolve () to avoid the 
27846         costly type name generation if there is no resolve event handler.
27847
27848 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27849
27850         * class.c, image.c: load exported types from file references.
27851
27852 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
27853
27854         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
27855           used to cache the managed methods used to create proxies and make 
27856           remote invocation of methods.
27857         * class.h: Added in MonoVTable a flag to indicate that a class needs 
27858           to be remotely created.
27859         * object.c: Modified the method mono_class_vtable(). It now initializes 
27860           the remote flag of the vtable. Modified mono_object_new_specific(), 
27861           so now it checks the remote flag.
27862         * icall.c: Added a couple of internal methods, one for enabling instance 
27863           creation interception for a type, and one for creating objects bypassing
27864           the remote check.
27865
27866 2003-02-18  Martin Baulig  <martin@ximian.com>
27867
27868         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
27869         New interncall to get a method's metadata token.
27870
27871         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
27872         New interncall for the debugger.
27873
27874 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
27875
27876         * class.c (mono_class_setup_vtable): allocate supertype array
27877
27878 2003-02-18  Martin Baulig  <martin@ximian.com>
27879
27880         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
27881
27882 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27883
27884         * reflection.c:
27885         (assembly_name_to_aname): jump over unknown properties (i've found
27886         something like: 'type, assembly, version=xxx, custom=null, public...',
27887         so now will ignore custom=null and still get the rest of the values).
27888
27889 2003-02-17  Dick Porter  <dick@ximian.com>
27890
27891         * threads.c: Have Thread.Start() wait for a semaphore to signal
27892         that the thread has set up all its local data.  This fixes bug
27893         34323, where Abort() raced the new thread's TLS data.
27894
27895         Also removes the handle_store() call from start_wrapper, because
27896         threads are now always created suspended and there is no longer a
27897         race between the parent and child threads to store the info.
27898
27899 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27900
27901         * image.c: explain the #- heap issue in a message, hopefully
27902         avoiding FAQs on mono-list.
27903
27904 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27905
27906         * icall.c:
27907         (GetEntryAssembly): if the domain has not invoked
27908         AppDomain.ExecuteAssembly yet, return the assembly of the default
27909         AppDomain.
27910
27911 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27912
27913         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27914
27915 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27916
27917         * metadata.c, reflection.c: simple speedup to type hash
27918         and equals code.
27919
27920 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27921
27922         * image.c, image.h, class.c, assembly.c: move module loading
27923         to MonoImage. When loading metadata, consider alignemnet from
27924         the start of metadata, not from the metadata address in memory.
27925
27926 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27927
27928         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27929         AssemblyBuilder objects. Factored out custom attribute creation into
27930         a separate function.
27931         (create_custom_attr): new function to create custom attributes.
27932
27933 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27934
27935         * Makefile.am: Got tired of typing the full pathname to pedump.
27936         Until there is another option, am installing this.
27937
27938 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27939
27940         * class.c (class_compute_field_layout): always set field->parent 
27941         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27942
27943 2003-02-11  Dick Porter  <dick@ximian.com>
27944
27945         * threads-types.h:
27946         * monitor.c: Rewrote Monitor, making lock much faster and
27947         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27948         creates them as needed.
27949
27950         * exception.c: Added SynchronizationLockException
27951
27952         * threads.c: Deleted old Monitor implementation.  The new one is
27953         in a new file.
27954
27955 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27956
27957         * class.c: handled TypedReference type code. Set the correct size for
27958         class data. Setup interface_offsets for interface classes, too.
27959
27960 2003-02-09  Martin Baulig  <martin@ximian.com>
27961
27962         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27963
27964 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27965
27966         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27967         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27968         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27969         * verify.c: check for code that runs after the end of the method.
27970
27971 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27972
27973         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27974         "System.Math::Round2".
27975         * sysmath.h: Added Floor, Round and Round2 definitions.
27976         * sysmath.c: Modified certain functions that were not 100% compliant
27977         with MS.NET (math precision) and added the implementation of Floor,
27978         Round and Round2.
27979
27980 2003-02-07  Martin Baulig  <martin@ximian.com>
27981
27982         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27983
27984 2003-02-07  Martin Baulig  <martin@ximian.com>
27985
27986         * debug-mono-symfile.c: Reflected latest symwriter changes.
27987         (mono_debug_create_mono_symbol_file): Removed.
27988         (mono_debug_open_mono_symbol_file): Take an argument which
27989         specifies whether to create a dynamic symbol file.
27990
27991 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27992
27993         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27994
27995 2003-02-05  Martin Baulig  <martin@ximian.com>
27996
27997         * reflection.c (mono_image_build_metadata): Make this public,
27998         protect it against being called multiple times, don't create
27999         resources and don't build the compressed metadata here.
28000         (mono_image_create_pefile): Do this here.
28001
28002         * icall.c
28003         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
28004
28005 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28006
28007         * socket-io.c: fixed bug #36322.
28008
28009 2003-02-06  Piers Haken <piersh@friskit.com>
28010
28011         * appdomain.[ch]:
28012         * class.h:
28013         * debug-mono-symfile.c:
28014         * icall.c:
28015         * loader.c:
28016         * mono-config.c:
28017         * monosn.c:
28018         * reflection.c:
28019         * socket-io.c: warning cleanups
28020
28021 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
28022
28023         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
28024         function. works like remoting invoke, but does a check for the Proxy first.
28025
28026 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
28027
28028         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
28029
28030 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
28031
28032         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
28033         array of pointers.
28034         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
28035         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
28036
28037         * object.c (mono_store_remote_field_new): used by the new jit
28038         instead of mono_store_remote_field
28039         (mono_load_remote_field_new): used by the new jit
28040         instead of mono_load_remote_field
28041
28042 2003-02-05  Patrik Torstensson
28043
28044         * appdomain.c: changed unload to take the domain id instead
28045         of domain
28046         
28047         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
28048
28049
28050 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28051
28052         * appdomain.c: don't look for assemblies in ApplicationBase if
28053         PrivateBinPathProbe is set.
28054
28055 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28056
28057         * object.c: make the first argument in main_args contain the absolute
28058         path to the assembly. Fixes bug #37511.
28059
28060 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28061
28062         * icall.c: get correct UTC offset for countries not using daylight
28063         time saving. Fixes bug #30030.
28064
28065 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28066
28067         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
28068         and 1 are the family).
28069
28070 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
28071
28072         * icall.c (ves_icall_InternalExecute): removed wrong assertion
28073
28074         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
28075
28076 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
28077
28078         * reflection.c: added support for SignatureHelper tokens, which is
28079         needed by the Calli opcode.
28080
28081         * reflection.h: track changes to SignatureHelper class.
28082
28083         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
28084
28085 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28086
28087         * appdomain.c: fixed loading assemblies from PrivateBinPath.
28088
28089 2003-02-03  Patrik Torstensson
28090         * appdomain.[c|h], domain.c : 
28091          - Added support for getting a domain via domain id
28092          - Support for setting and getting domain from System.AppDomain 
28093            (used in cross appdomain channel)
28094          - Added support for get/set for a MonoAppContext on a thread 
28095            (Context class in System.Runtime.Remoting.Contexts),
28096          - Removed hack in Get/SetData and ExecuteAssembly.
28097         
28098         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
28099         the managed world to get control when a proxy is created.
28100
28101         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
28102         
28103 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
28104
28105         * icall.c
28106         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
28107         Populate the codebase field as well.
28108
28109 2003-02-02  Martin Baulig  <martin@ximian.com>
28110
28111         * debug-mono-symfile.c
28112         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
28113         (mono_debug_symfile_add_method): Allow interncalls.
28114
28115 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28116
28117         * icall.c: throw parse exception if strtod fails or the string is empty.
28118
28119 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
28120
28121         * marshal.c: handle object type separately from defined
28122         class types.
28123
28124 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
28125
28126         * marshal.c: handle NATIVE_LPSTR for strings when it's
28127         explicitly specified.
28128
28129 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
28130
28131         * reflection.c, reflection.h, icall.c: setup the reflection
28132         handle cache for ModuleBuilders and AssemblyBuilders.
28133
28134 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
28135
28136         * reflection.c (reflection_methodbuilder_to_mono_method): set
28137         pinvoke flag
28138
28139 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28140
28141         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
28142
28143 2003-01-29  Dick Porter  <dick@ximian.com>
28144
28145         * threads.c: No need for the fake_thread kludge now that Thread
28146         doesn't run a class constructor
28147         
28148 2003-01-29  Dick Porter  <dick@ximian.com>
28149
28150         * threads.c: Use g_direct_hash instead of the rather bogus
28151         g_int_hash
28152
28153 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
28154
28155         * marshal.c (mono_marshal_get_native_wrapper): add check for null
28156         (fix pinvoke12.exe)
28157         (mono_marshal_get_struct_to_ptr): generate valid IL code
28158         (mono_marshal_get_ptr_to_struct): generate valid IL code
28159         (*): correctly set sig->pinvoke, we need to memdup the signature
28160         to do that
28161
28162 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
28163
28164         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
28165         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
28166
28167 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
28168
28169         * profiler.c: provide more callers information.
28170
28171 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
28172
28173         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
28174
28175         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
28176
28177         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
28178
28179 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28180
28181         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
28182         exception instead of going into an infinite loop on dates which it 
28183         can't yet handle.
28184
28185         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
28186         out-of-range exception if needed.
28187
28188         * class.c (mono_class_setup_vtable): allow a virtual method to provide
28189         an implementation for an interface method and to override an inherited
28190         method at the same time. 
28191         Imagine a scenario when a virtual method is used to override a
28192         virtual abstract method in a parent class, and this same method 
28193         provides an implementation for an method inherited from an interface. 
28194         In this case, the interface resolution code will set im->slot, which 
28195         means that the virtual method override pass will skip this method 
28196         which means a pointer to the abstract method inherited from the parent
28197         will remain in the vtable of this non-abstract class.
28198
28199         * class.c: (mono_class_setup_vtable): continue search for a real 
28200         method if only an abstract method is found.     
28201
28202 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
28203
28204         * reflection.c: add size to encoding for ByValStr and ByValArray
28205         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
28206
28207 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28208
28209         * class.c (mono_class_setup_vtable): pass the override info as an
28210         argument.
28211
28212         * class.c (mono_class_setup_vtable): set the slot of overriding methods
28213         correctly.
28214         
28215         * reflection.c (ensure_runtime_vtable); add support for method 
28216         overrides.
28217         
28218 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28219
28220         * reflection.c (resolution_scope_from_image): Hack to work to work with
28221         dynamic assemblies.
28222
28223         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
28224         added a 'force_ref' argument to force this function to allways return 
28225         a TypeRef. This is needed by mono_image_get_memberref_token ().
28226         
28227 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28228
28229         * reflection.c (mono_image_get_type_info): interfaces really don't have
28230         a parent.
28231
28232         * reflection.c (mono_image_basic_init): fill out missing fields of
28233         image structure.
28234
28235         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
28236         dynamic assemblies. This is required so dynamic assemblies show up in
28237         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
28238         Type::GetType() etc. This is consistent with MS behaviour.
28239
28240         * image.c image.h reflection.c: add newly created classes to the name 
28241         cache so mono_class_get () will find them.      
28242
28243 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
28244
28245         First part of changes to get IKVM.NET running under mono.
28246         
28247         * appdomain.h, appdomain.c: added new function 
28248         mono_domain_try_type_resolve() which will emit TypeResolve events. 
28249         This function will call AppDomain::DoTypeResolve to do the actual work.
28250
28251         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
28252         moved existing code dealing with dynamic tokens to a new function 
28253         called mono_reflection_lookup_dynamic_token (). This function will 
28254         raise TypeResolve events when appropriate. Since reflection.c is not 
28255         part of libmetadata, a new hook function called 
28256         mono_lookup_dynamic_token() is added to class.c which will call this.
28257
28258         * assembly.h assembly.c: make the invoke_load_hook function public,
28259         so it can be called for dynamic assemblies.
28260
28261         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
28262
28263         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
28264         type isn't found.
28265
28266         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
28267         MonoGHashTable, since it contains pointers to objects which the GC 
28268         needs to track.
28269
28270         * assembly.c (search_loaded): remove unused variable.
28271         
28272 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
28273
28274         * object.c: fixed issue exposed by gcc-generated IL programs
28275         that use RVA data for pointers.
28276
28277 2003-01-25  Martin Baulig  <martin@ximian.com>
28278
28279         * threads.c (start_wrapper): Moved the initialization of
28280         `start_func' above the mono_new_thread_init() call to which we
28281         pass it as argument.
28282
28283 2003-01-24  Martin Baulig  <martin@ximian.com>
28284
28285         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
28286         the MonoThread pointer.
28287
28288 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
28289
28290         * icall.c: Rename `PowImpl' to Pow.
28291
28292 2003-01-23  Dick Porter  <dick@ximian.com>
28293
28294         * threads.c (start_wrapper): Create a Thread object if needed, so
28295         the Main() thread can do the class initialisation in a subthread
28296         that has been set up to allow managed code execution.
28297
28298         Pass the thread ID instead of the MonoThread pointer to the thread
28299         start and attach callbacks.  This change is required, because the
28300         jit thread start callback must be called _before_ the Thread
28301         object can be created.
28302         
28303         (mono_thread_init): Removed much object creation code that is no
28304         longer needed.  No managed code is called from here now.
28305
28306         * object.c (mono_runtime_exec_managed_code): Create a subthread
28307         for Main, and call back to the runtime to use it.
28308         Set the exit code when Main exits.
28309
28310         * gc.c: Make sure domain finalisation happens in a subthread.
28311         Re-enable threaded GC, fixing bug 31333 (again).
28312
28313         * environment.c: System.Environment internall calls (so far just
28314         ExitCode is here, the others are still in icall.c)
28315
28316         * appdomain.c (mono_runtime_cleanup): All threads running managed
28317         code should have finished before mono_runtime_cleanup() is
28318         reached, so no need to clean up threads.
28319
28320 2003-01-22  Martin Baulig  <martin@ximian.com>
28321
28322         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
28323         `gpointer func' arguments.      
28324         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
28325         but added `MonoThread *thread' argument.
28326         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
28327
28328         * threads.c (mono_new_thread_init): Added `gpointer func' argument
28329         and pass it to the mono_thread_start_cb callback.
28330         (mono_install_thread_callbacks): New public function to install a
28331         set of callbacks which are set by the debugger.
28332         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
28333
28334 2003-01-22  Martin Baulig  <martin@ximian.com>
28335
28336         * Makefile.am: Install debug-mono-symfile.h.
28337
28338 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
28339
28340         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
28341
28342 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
28343
28344         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
28345         * class.c (mono_ptr_class_get): correctly set access levels of pointers
28346         (mono_array_class_get): correctly set access levels of arrays
28347
28348 2003-01-20      Patrik Torstensson
28349         * image.h (MonoAssemblyName): changed major, minor, build, revision
28350         from signed to unsigned.
28351
28352 2003-01-20  sean kasun <skasun@azstarnet.com>
28353
28354         * reflection.c (load_cattr_value): Now this handles
28355         MONO_TYPE_SZARRAY.  Fixes bug #35629
28356
28357 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
28358
28359         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
28360         integer value
28361
28362 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28363
28364         * decimal.c: fixed bug #26056.
28365
28366 2003-01-17  Martin Baulig  <martin@ximian.com>
28367
28368         * gc.c: Raise an ExecutionEngineException instead of using g_error().
28369
28370 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28371
28372         * exception.[ch]:
28373         (mono_get_exception_type_initialization): new function.
28374
28375         * object.c: throw a TypeInitializationException when an exception is
28376         thrown invoking the class constructor.
28377
28378 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28379
28380         * reflection.c: fixed attribute reading.
28381
28382 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28383
28384         * icall.c:
28385         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
28386         provided, look for the type in the calling assembly and then in
28387         mscorlib; if the assembly name is provided, only try that one.
28388
28389 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
28390
28391         * object.c: register the vtable before there is a chance it's
28392         queried again recursively.
28393
28394 2003-01-13  Duncan Mak  <duncan@ximian.com>
28395
28396         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
28397         gc-internal.h. 
28398         
28399 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
28400
28401         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
28402
28403 2003-01-11  Martin Baulig  <martin@ximian.com>
28404
28405         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
28406         this to 20 for the release.
28407
28408 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
28409
28410         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
28411
28412         * loader.c (mono_method_get_marshal_info): bug fix
28413
28414         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
28415         structures with explicit layout
28416
28417 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
28418
28419         * profiler.c: made the output more readable (and sorted). 
28420         Added caller information for the allocation profiler.
28421
28422 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
28423
28424         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
28425
28426 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28427
28428         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
28429         to get value types.
28430         
28431 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
28432
28433         * object.c, profiler.h, profiler.c, profiler-private.h:
28434         Added object allocation profiler.
28435
28436 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
28437
28438         * reflection.h, reflection.c: handle global methods.
28439         Compress blob entries.
28440
28441 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
28442
28443         * marshal.c: fix compilation.
28444
28445 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
28446
28447         * loader.c (mono_method_get_marshal_info): impl.
28448
28449         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
28450
28451 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28452
28453         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
28454         for reference types.
28455
28456 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
28457
28458         * loader.c: fixed off by one error in loaded parameter names.
28459
28460 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
28461
28462         * marshal.c (mono_marshal_get_icall_wrapper): like
28463         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
28464         instead of a MonoMethod.
28465
28466 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28467
28468         * decimal.c: fixed bug #36537.
28469
28470 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
28471
28472         * marshal.c: throw a missing method exception if a
28473         P/Invoke method is not found.
28474
28475 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
28476
28477         * icall.c: allow a null this for constructors.
28478
28479 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
28480
28481         * icall.c: raise the proper exceptions if the arguments to the
28482         internal Invoke are incorrect.
28483
28484 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
28485
28486         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
28487
28488 2003-01-03  Martin Baulig  <martin@ximian.com>
28489
28490         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
28491
28492 2002-12-31  Martin Baulig  <martin@ximian.com>
28493
28494         * debug-mono-symfile.c: Completely rewrote the type section.
28495         Instead of using individual malloc()ed fields, we use one big
28496         continuous memory area and offsets into this area.
28497         See the comments in the source code for details.
28498
28499 2002-12-30  Martin Baulig  <martin@ximian.com>
28500
28501         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
28502
28503 2002-12-30  Martin Baulig  <martin@ximian.com>
28504
28505         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
28506         line number table in this data blob instead of using an external
28507         pointer.
28508
28509 2002-12-28  Martin Baulig  <martin@ximian.com>
28510
28511         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
28512
28513 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
28514
28515         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
28516         as a boxed return type.
28517
28518 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
28519
28520         * appdomain.c
28521         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
28522         g_build_filename to properly get separators on the filename created.
28523
28524         * object.h: Small change, introduce MonoMarshalByRefObject to
28525         track the layout of that structure in the C# universe as we make
28526         changes there.
28527
28528 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
28529
28530         * object.c: removed assert to allow static fields on interfaces.
28531         * loader.c: a TypeSpec may be used for any type, not just arrays.
28532
28533 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
28534
28535         * class.c, class.h: added mono_class_array_element_size ().
28536         Ignore static methods in interfaces.
28537
28538 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28539
28540         * threads.c: fixed the build under cygwin.
28541
28542 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
28543
28544         * reflection.c: handle nullref constants. Allocate keys for
28545         reflection handles with the GC.
28546
28547 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
28548
28549         * threads.c, threads.h: added mono_thread_get_abort_signal()
28550         to get a suitable signal for thread abort.
28551
28552 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
28553
28554         * metadata.c: fix handling of ExportedType table.
28555
28556 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28557
28558         * icall.c: added WriteWindowsDebugString internal call.
28559
28560 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28561
28562         * reflection.h: added fields to match C# implementation.
28563
28564 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28565
28566         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
28567
28568 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
28569
28570         * gc.h, gc-internal.h: Rename header for GC internal calls to
28571         gc-internal.h from gc.h as to not clash with Boehm GC having its
28572         header installed as <gc.h> in outside include paths.
28573         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
28574         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
28575
28576 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28577
28578         * icall.c: assign minor, build and revision in FillName.
28579
28580 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
28581
28582         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
28583         Added support for running code generated by Reflection.Emit.
28584
28585 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28586
28587         * appdomain.c: check for NULL argument in LoadFrom.
28588
28589 2002-12-10  Dick Porter  <dick@ximian.com>
28590
28591         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
28592
28593 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28594
28595         * appdomain.c: fix buglet when building exe file name.  Handle full
28596         assembly name (needed after latest changes to AssemblyName).
28597         * image.c:
28598         (mono_image_close): free some hashtables.
28599
28600 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
28601
28602         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
28603         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
28604         on some systems (redhat 7.3) 
28605
28606 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
28607
28608         * threads.c: delete the critical section of a sync block,
28609         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
28610
28611 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
28612
28613         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
28614
28615 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28616
28617         * appdomain.[ch]: handle the assembly preload event to try loading the
28618         assemblies using the paths we have in the current domain.
28619
28620         * assembly.[ch]: created an assembly preload hook that is called to try
28621         loading the assembly by other means that the ones provided here.
28622
28623         * domain.c: initialize the domain search path.
28624
28625         From now on, assemblies (TODO: except corlib and System) are loaded
28626         according to these rules when using mono_assembly_load ():
28627
28628                 1. It tries to load the assembly from the ApplicationBase
28629                 of the current domain appending .dll and .exe (TODO: have to
28630                 try loading from name/name.dll and name/name.exe).
28631
28632                 2. It tries the search path specified in PrivateBinPath for the
28633                 current domain (if any).
28634
28635                 3. Previous behavior.
28636
28637 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
28638
28639         * icall.c: implemented GetInterfaceMap() related icall.
28640         * domain.c, loader.h: load MethodInfo in mono_defaults.
28641
28642 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
28643
28644         * gc.c: disable the finalizer thread for now, untill all the issues
28645         with it are resolved.
28646
28647 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28648
28649         * string-icalls.c: handle embedded nulls in string ctor when the
28650         length is specified.
28651
28652 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
28653
28654         * class.c: look for explicit interface implementation in parent
28655         classes, too.
28656
28657 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
28658
28659         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
28660
28661 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
28662
28663         * gc.c: protect handles with a critical section.
28664
28665 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28666
28667         * icall.c:
28668         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
28669         parameters. If no assembly specified, try getting the type from all
28670         the assemblies in the current domain, else, load the assembly and get
28671         the type from it.
28672
28673 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28674
28675         * marshal.c: applied patch from Aleksey Demakov that fixes
28676         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
28677
28678 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28679
28680         * icall.c: fixed get_location.
28681
28682 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
28683
28684         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
28685         declarations to make it work with older gcc. 
28686
28687         * loader.c (mono_get_method): set signature->pinvoke for native calls
28688
28689 2002-11-20  Dick Porter  <dick@ximian.com>
28690
28691         * threads.c (mono_thread_init): Set the main thread's handle
28692
28693 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28694
28695         * gc.c: allow compilation without GC support. Changed to match the
28696         mono coding style.
28697
28698 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28699
28700         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
28701
28702 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
28703
28704         * reflection.c: set a public key token on the core assemblies.
28705
28706 2002-11-18  Dick Porter  <dick@ximian.com>
28707
28708         * threads.c: Split out some thread initialisation so that other
28709         files can set the start callback function.
28710
28711         * gc.c: Run finalisers in a separate thread, to avoid stack
28712         overflow.  Fixes bug 31333.
28713
28714         * appdomain.c: Set up GC finalisation thread.
28715
28716         * reflection.c: 
28717         * object.c: 
28718         * domain.c: Use gc.h macros for GC_malloc
28719         
28720 2002-11-15  Dick Porter  <dick@ximian.com>
28721
28722         * threadpool.c: 
28723         * threads.c:
28724         * appdomain.c: Removed mono_runtime_init_with_attach(),
28725         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
28726         merging the extra parameter with the existing function.  Removed
28727         unneeded code in mono_thread_attach().
28728
28729 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
28730
28731         * image.c (mono_image_loaded_by_guid): a method to get loaded
28732         images by guid. 
28733         (load_metadata_ptrs): we store the guid as string.
28734
28735 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
28736
28737         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
28738
28739         * metadata.c (mono_guid_to_string): imported method form Zoltan
28740         Varga (slightly modified)
28741
28742         * assembly.c (mono_assembly_open): load precompiled code
28743
28744         * loader.h (MonoMethod): we store the method token for use in the
28745         aot compiler. 
28746
28747 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28748
28749         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
28750         the hook function called when an assembly is loaded.
28751         
28752         * domain.c: Modified file.
28753         (mono_domain_assembly_load): removed hash table insertion of assemblies.
28754
28755         Fixes bug #33196.
28756
28757 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
28758
28759         * reflection.c: Map PEFileKind to the value expected by the WinNT
28760         image loader. 
28761
28762 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28763
28764         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
28765         Read until the buffer is filled completely.
28766
28767 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28768
28769         * icall.c: implemented MonoType.InternalGetEvent ().
28770
28771 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28772
28773         * appdomain.c: implemented InitAppDomainSetup. Delayed
28774         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
28775         the entry_assembly.
28776
28777         * assembly.c: base_dir is now an absolute path ending with
28778         G_DIR_SEPARATOR.
28779
28780         * icall.c: modified get_location according to the above changes.
28781
28782         * object.c: init AppDomain.SetupInformation for the default domain after
28783         we have the entry assembly.
28784
28785         * domain.c: when unloading a domain, setup = NULL.
28786
28787 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
28788
28789         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
28790
28791 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
28792
28793         * object.h, object.c: introduced mono_object_get_virtual_method ()
28794         to lookup the method invoked on an object when a callvirt is done on
28795         a method.
28796         * icall.c: make MethodInfo::Invoke() always do a virtual call.
28797
28798 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28799
28800         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
28801         current domain when loaded an assembly and failed to load it.
28802
28803         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
28804
28805 2002-10-31  Dick Porter  <dick@ximian.com>
28806
28807         * icall.c: 
28808         * file-io.h: 
28809         * file-io.c: Return the error status in a parameter, as the
28810         GetLastError() value has long since been blown away if we try and
28811         look it up in a subsequent internal call invocation.  Delete the
28812         GetLastError() internal call, because it's useless.
28813
28814 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
28815
28816         * class.[ch]: added cast_class to fix bug 29517
28817
28818 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
28819
28820         * marshal.c: create valid IL code in the filter clause:
28821         the new JIT is less forgiving:-)
28822
28823 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28824
28825         * icall.c: removed get_property internal call.
28826
28827 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
28828
28829         * appdomain.h domain.c: Added an ID to appdomains.
28830         
28831         * threads.c threads.h icall.c: Implement icall
28832         Thread:GetDomainID(), and remove unused icall 
28833         CurrentThreadDomain_internal.
28834
28835 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28836
28837         * icall.c: Don't recurse through the base types in GetConstructor.
28838         Fixes bug #32063. 
28839
28840 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28841
28842         * mempool.h, mempool.c: added mono_mempool_empty() and
28843         mono_mempool_stats().
28844
28845 2002-10-23  Dick Porter  <dick@ximian.com>
28846
28847         * file-io.c: 
28848         * file-io.h: 
28849         * icall.c: Added MonoIO.GetFileType internal call
28850
28851 2002-10-17  Dick Porter  <dick@ximian.com>
28852
28853         * appdomain.c (mono_runtime_cleanup): Don't signal the async
28854         delegate semaphore before waiting for all threads to finish,
28855         because new threads can also call async delegates.  Fixes bug
28856         32004.
28857
28858         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
28859         of 3 seconds, in case another async job is queued.  (This part is
28860         needed because the bug fix reintroduced the 3s exit lag.)  This
28861         makes the mono_runtime_shutdown flag superfluous.
28862
28863 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28864
28865         * reflection.c: include ehader size in method section headers.
28866         Really check for suplicated modules entries.
28867
28868 2002-10-17  Martin Baulig  <martin@gnome.org>
28869
28870         * debug-mono-symfile.c: Added back support for locals.
28871
28872 2002-10-14  Martin Baulig  <martin@gnome.org>
28873
28874         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
28875         MONO_TYPE_VOID.
28876
28877 2002-10-14  Martin Baulig  <martin@gnome.org>
28878
28879         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
28880         mono_class_get() instead of looking in the class cache. 
28881
28882 2002-10-13  Martin Baulig  <martin@gnome.org>
28883
28884         * debug-mono-symfile.c: Set version number to 28, include the
28885         signature in method names.
28886
28887 2002-10-13  Martin Baulig  <martin@gnome.org>
28888
28889         * debug-mono-symfile.h: Set version number to 27.
28890
28891 2002-10-11  Martin Baulig  <martin@gnome.org>
28892
28893         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28894
28895 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28896
28897         * metadata.c, metadata.h: added helper function to allocate signatures.
28898
28899 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28900
28901         * icall.c: added internal call to get the location of machine.config.
28902
28903 2002-10-08  Martin Baulig  <martin@gnome.org>
28904
28905         * debug-mono-symfile.c: Ignore classes with a pending init for the
28906         moment.
28907
28908 2002-10-03  Dick Porter  <dick@ximian.com>
28909
28910         * threads.c: Freebsd pthread_t is a pointer
28911
28912 2002-10-03  Dick Porter  <dick@ximian.com>
28913
28914         * socket-io.c: Implemented GetHostName_internal
28915
28916 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28917
28918         * mono-config.c:
28919         (mono_config_parse_file): don't leak the text.
28920
28921 2002-10-02  Martin Baulig  <martin@gnome.org>
28922
28923         * debug-mono-symfile.c: Added support for methods.
28924
28925 2002-10-01  Martin Baulig  <martin@gnome.org>
28926
28927         * debug-mono-symfile.c: Don't emit methods and line numbers for
28928         the dynamic symbol file, just write the type table.  We can easily
28929         have an external helper program which creates a symbol file for an
28930         IL file.        
28931
28932 2002-10-01  Dick Porter  <dick@ximian.com>
28933
28934         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28935         Only add the handle to the cleanup array when we're about to
28936         launch the thread.  Bug 31425 deadlocked when the test was run on
28937         mono under w32.
28938
28939 2002-10-01  Martin Baulig  <martin@gnome.org>
28940
28941         * debug-mono-symfile.c: Added support for properties.
28942
28943 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28944
28945         * reflection.c: unaligned store fix from Mark Crichton
28946         <crichton@gimp.org>.
28947
28948 2002-09-27  Martin Baulig  <martin@gnome.org>
28949
28950         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28951         New interncall.
28952
28953 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28954
28955         * assembly.h, assembly.c: use a sane API to hook into the assembly
28956         loading process instead of a useless special-purpouse hack
28957         (ngen needs a hook, too, for example).
28958
28959 2002-09-27  Dick Porter  <dick@ximian.com>
28960
28961         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28962         io-layer can set up some process handle info.  Not needed on w32,
28963         but doesn't hurt either.
28964
28965         * process.c: Pass the program name in the second parameter to
28966         CreateProcess, so the path is searched.  Include the working
28967         directory. Implemented process name, process enumeration, and some
28968         process detail internal calls.
28969         
28970         * icall.c: Added internal calls for process lookup, and some
28971         process details
28972
28973 2002-09-26  Martin Baulig  <martin@gnome.org>
28974
28975         * assembly.c (mono_install_open_assembly_hook): New global
28976         function to install a function to be invoked each time a new
28977         assembly is loaded.
28978         (mono_assembly_open): Run this callback function if set.
28979
28980         * debug-mono-symfile.c: Put back line numbers for the dynamic
28981         symbol file and also record the .il file as source file.  This
28982         allows us to install the temporary symbol file as `file.dbg' just
28983         like a compiler-generated one.
28984
28985 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28986
28987         * Corrected typo in gc.c (BOHEM vs BOEHM).
28988
28989 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28990
28991         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28992         GetProperties. Also avoid calling g_slist_length in GetProperties and
28993         GetMethods.
28994
28995 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28996
28997         * reflection.c: avoid unaligned stores (bug spotted by
28998         Mark Crichton  <crichton@gimp.org>).
28999
29000 2002-09-25  Martin Baulig  <martin@gnome.org>
29001
29002         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
29003         instead of guint64 for addresses and added prologue/epilogue info.
29004
29005 2002-09-25  Martin Baulig  <martin@gnome.org>
29006
29007         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
29008         store line number info.  For the dynamic symbol file, we only need
29009         to provide the JIT generated dynamic line number info for the dynamic
29010         symbol file.
29011
29012 2002-09-25  Martin Baulig  <martin@gnome.org>
29013
29014         * debug-mono-symfile.h: Incremented version number.
29015
29016 2002-09-24  Martin Baulig  <martin@gnome.org>
29017
29018         * class.c (mono_debugger_class_init_func): New global function
29019         pointer variable.
29020         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
29021         call it.
29022
29023         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
29024         function.  This is called via the mono_debugger_class_init_func
29025         hook to add all types to the dynamic type table.
29026         (ves_icall_MonoDebugger_GetType): New interncall to get a class
29027         from its metadata token.
29028
29029         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
29030         New interncall for the debugger.
29031
29032 2002-09-24  Nick Drochak <ndrochak@gol.com>
29033
29034         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
29035         before using it in case it is null.
29036         
29037 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29038
29039         * metadata.c: allow custom modifiers in local var signatures
29040         (bug spotted by Zoltan Varga).
29041
29042 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29043
29044         * class.c: deal with the <Module> class that may have a NULL vtable.
29045         Eliminate warnings.
29046
29047 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29048
29049         * image.c, image.h: more strong name helpers.
29050         * monosn.c: more work: convert pem keys to cryptoapi format.
29051
29052 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29053
29054         * string-icalls.c: speedup IndexOf.
29055
29056 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29057
29058         * icall.c: updates from Zoltan.2.Varga@nokia.com.
29059
29060 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29061
29062         * icall.c: cleanup: use mono_object_domain ().
29063
29064 2002-09-23  Martin Baulig  <martin@gnome.org>
29065
29066         * debug-mono-symfile.c: Improved type support.
29067
29068 2002-09-22  Martin Baulig  <martin@gnome.org>
29069
29070         * debug-mono-symfile.c: Added support for reference types and strings.
29071
29072 2002-09-22  Martin Baulig  <martin@gnome.org>
29073
29074         * debug-mono-symfile.c: Started to work on the type table.
29075
29076 2002-09-21  Martin Baulig  <martin@gnome.org>
29077
29078         * debug-mono-symfile.c: Largely reworked the symbol table format.
29079         The symbol table is now incrementally updated each time a new
29080         method is added.  We're now also using our own magic and version
29081         so that you don't need to recompile all your classes if the
29082         dynamic table changes.
29083         (mono_debug_update_mono_symbol_file): Removed.
29084         (mono_debug_symfile_add_method): New function to add a method.
29085
29086 2002-09-21  Martin Baulig  <martin@gnome.org>
29087
29088         * icall.c
29089         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
29090         New interncall.
29091
29092         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
29093         New interncall to get a method from its metadata token.
29094
29095 2002-09-21  Martin Baulig  <martin@gnome.org>
29096
29097         * debug-mono-symfile.c: Create type table.
29098
29099 2002-09-20  Martin Baulig  <martin@gnome.org>
29100
29101         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
29102
29103 2002-09-20  Martin Baulig  <martin@gnome.org>
29104
29105         * debug-mono-symfile.c: Provide information about params and locals.
29106
29107 2002-09-20  Martin Baulig  <martin@gnome.org>
29108
29109         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
29110         New interncall.
29111
29112         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
29113         interncall to get a method from its metadata token.
29114
29115 2002-09-20  Martin Baulig  <martin@gnome.org>
29116
29117         * debug-mono-symfile.c: Added a few checks for method->header
29118         being non-NULL.  This should never happen, but for the moment
29119         let's use a g_warning() rather than a g_assert().
29120
29121 2002-09-19  Mark Crichton  <crichton@gimp.org>
29122
29123         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
29124         even if support for it isn't present.  Added an #ifdef to fix this.
29125
29126         * socket-io.c: Added checks back for Solaris support.
29127
29128 2002-09-19  Martin Baulig  <martin@gnome.org>
29129
29130         * debug-mono-symfile.c (read_string, write_string): Reflect latest
29131         changes in the symbol file format.
29132
29133 2002-09-18  Martin Baulig  <martin@gnome.org>
29134
29135         * debug-mono-symfile.c: Set version number to 21.
29136
29137 2002-09-18  Dick Porter  <dick@ximian.com>
29138
29139         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
29140         on netbsd.  Fixes bug 30051.
29141
29142 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29143
29144         * reflection.c:
29145         (set_version_from_string): little fix.
29146
29147 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29148
29149         * monosn.c, Makefile.am: added strong name utility.
29150         * reflection.h, reflection.c: implemented delayed signing,
29151         locale, version and hash id assembly attributes.
29152
29153 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29154
29155         * loader.c, metadata.c: load param attributes in signatures.
29156
29157 2002-09-16  Martin Baulig  <martin@gnome.org>
29158
29159         * debug-mono-symfile.c: Added string table with all method names.
29160
29161 2002-09-14  Martin Baulig  <martin@gnome.org>
29162
29163         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
29164         fast method lookup.
29165
29166 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29167
29168         * reflection.c: record the public key token of referenced assemblies.
29169
29170 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29171
29172         * image.c, image.h: added functions to get the strong name and the
29173         public key of an assembly.
29174         * pedump.c: use them.
29175
29176 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
29177
29178         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
29179
29180 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
29181
29182         * marshal.c (mono_marshal_get_managed_wrapper): Added
29183         MONO_TYPE_BOOLEAN 
29184
29185 2002-09-11  Martin Baulig  <martin@gnome.org>
29186
29187         * gc.c: Call GC_unregister_disappearing_link() on all links when
29188         finalizing them, this is necessary to aviod a crash in boehm's
29189         finalize handler.
29190
29191 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29192
29193         * gc.c: handle GetTarget for finalized objects spotted and fixed by
29194         nick@chemlab.org.
29195
29196 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29197
29198         * icall.c: implemented MonoType::Module.
29199         * reflection.c, reflection.h: mono_module_get_object () from
29200         Tomi Pakarinen <tomi.pakarinen@welho.com>.
29201
29202 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29203
29204         * icall.c: ignore overridden methods in GetMethods ().
29205         Fix for FieldInfo::SetValue().
29206         * object.c: handle float/double in runtime invoke.
29207
29208 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29209
29210         * object.c: allow a constructor to be called again on an object.
29211
29212 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29213
29214         * class.h, class.c: move field layout code to it's own function and
29215         export it. Get an interface id earlier. Move fields in MonoClass
29216         so they are more cache friendly and align the bitfields.
29217         * loader.c: temporary handle get_param_names() for a runtime method.
29218         * reflection.c, reflection.h: more code to handle runtime creation of
29219         types.
29220
29221 2002-09-09  Martin Baulig  <martin@gnome.org>
29222
29223         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
29224         signature with the pinvoke field being set for the actual call.
29225
29226 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29227
29228         * icall.c: removed some unused icalls. Start of map of glib charsets
29229         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
29230
29231 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29232
29233         * debug-helpers.c: break infinite loop (found and fixed by
29234         Holger Arnold <harnold@gmx.de>).
29235
29236 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29237
29238         * icall.c: target may be null in create_delegate.
29239
29240 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29241
29242         * marshal.c: handle a boolean return type.
29243
29244 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29245
29246         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
29247
29248 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29249
29250         * gc.c: fix weakreferences.
29251
29252 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29253
29254         * icall.c: added icall to get default codepage.
29255
29256 2002-09-03  Dick Porter  <dick@ximian.com>
29257
29258         * threads.h: 
29259         * threads.c: Use MonoThread instead of MonoObject where
29260         apropriate.
29261
29262         Store running thread objects in a hash table, so that we have all
29263         the info to hand when waiting for them to finish
29264         (means we don't need OpenThread() any more, so mingw builds should
29265         be fully functional again.)
29266
29267         * verify.c:
29268         * object.h: Added thread ID to MonoThread
29269
29270 2002-09-03  Martin Baulig  <martin@gnome.org>
29271
29272         * icall.c (System.Reflection.Assembly::get_location): New interncall.
29273
29274 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29275
29276         * icall.c: fixed leak in get_temp_path. Thanks lupus.
29277
29278 2002-09-03  Martin Baulig  <martin@gnome.org>
29279
29280         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
29281         argument to store the end address of the disassembled instruction.
29282
29283         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
29284         here from debug-symfile.h.
29285         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
29286         JIT into this struct.
29287         (MonoSymbolFile): Added `char *image_file' field.
29288         (MonoDebugGetMethodFunc): Removed.
29289         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
29290         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
29291         (mono_debug_find_method): New method.
29292
29293         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
29294         create a full symbol file.
29295         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
29296         and static symbol files.
29297         (mono_debug_find_method): The symbol file keeps an internal method hash,
29298         call this to get a MonoDebugMethodInfo from a MonoMethod.
29299
29300         * debug-symfile.[ch]: Removed.
29301
29302 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
29303
29304         * image.c (do_mono_image_open): Remove linker version check.
29305
29306 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
29307
29308         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
29309         wrappers for instance methods.
29310         
29311 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29312
29313         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
29314
29315 2002-08-28  Dick Porter  <dick@ximian.com>
29316
29317         * Makefile.am: Export HOST_CC for w32 builds
29318
29319 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29320
29321         * file-io.c process.c: MonoString are null terminated, no
29322         need for mono_string_to_utf16() anymore.
29323
29324 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29325
29326         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
29327
29328 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
29329
29330         * icall.c, reflection.h: speedup System.MonoType.
29331
29332 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29333
29334         * reflection.c: allow null as the value of a string argument in
29335         custom attributes constructors.
29336
29337 2002-08-27  Martin Baulig  <martin@gnome.org>
29338
29339         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
29340         `trampoline_address' field.
29341
29342 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
29343
29344         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
29345         check (fixes bug #29486) 
29346
29347 2002-08-27  Martin Baulig  <martin@gnome.org>
29348
29349         * debug-mono-symfile.c: Changed the file format in a way that allows us
29350         open it read-only and to use a specially malloced area for all the
29351         dynamic data.  We can now also generate a symbol file on-the-fly if we're
29352         debugging IL code and there is no MCS generated symbol file for it.
29353
29354 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29355
29356         * object.c: added a define for a good string and array
29357         creation speedup (not enabled by default because we need to deal with
29358         the synch stuff).
29359
29360 2002-08-26  Martin Baulig  <martin@gnome.org>
29361
29362         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
29363         function to create a dynamic symbol file.  This is used by the
29364         debugger to create a symbol file for IL code on-the-fly.
29365
29366 2002-08-26  Martin Baulig  <martin@gnome.org>
29367
29368         * loader.c (mono_lookup_pinvoke_call): Include the error message
29369         from g_module_error() in the error message.
29370
29371 2002-08-24  Martin Baulig  <martin@gnome.org>
29372
29373         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
29374         function to update the symbol file.  The symbol file is mmap()ed
29375         writable, but private.  This allows us to install the symbol file
29376         together with the assembly.
29377
29378 2002-08-24  Martin Baulig  <martin@gnome.org>
29379
29380         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
29381         but they can read the new symbol file format which mcs is now creating.
29382
29383         * debug-symfile.c (mono_debug_find_source_location): Moved to
29384         debug-mono-symfile.c; this is now operating on the new symbol file.
29385
29386 2002-08-23  Martin Baulig  <martin@gnome.org>
29387
29388         * debug-helpers.c (mono_method_desc_from_method): New function to get
29389         a MonoMethodDesc from a MonoMethod.
29390
29391 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29392
29393         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
29394         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
29395
29396 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29397
29398         * string-icalls.[ch]: make helper methods static.
29399
29400 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29401
29402         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
29403         types to it and to SetValueInternal.
29404
29405         * object.c: Moved handle_enum label to its proper place. This was the
29406         f... bug! ;-)
29407
29408         This time i compiled mcs and gtk-sharp and they both work.
29409
29410 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29411
29412         * icall.c: reverted partially my previous patch until 
29413         object.c:set_value handles enums correcly.
29414
29415 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29416
29417         * icall.c:
29418         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
29419         (ves_icall_System_Environment_get_MachineName): removed warning when
29420         compiling under cygwin.
29421
29422 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29423
29424         * object.c: fixed field_get_value() for reference types.
29425
29426 2002-08-22  Dick Porter  <dick@ximian.com>
29427
29428         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
29429         Don't free a buffer while it's still needed.  Patch from Jonathan
29430         Liger <Jonathan.liger@wanadoo.fr>
29431
29432 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
29433
29434         * icall.c (ves_icall_System_Environment_get_Platform): Add new
29435         internal call.
29436
29437 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
29438
29439         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
29440         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
29441
29442         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
29443         we call unmanaged code which throws exceptions.
29444
29445 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29446
29447         * appdomain.h: added per-domain entry_assembly.
29448         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
29449         arguments.
29450         * icall.c: Assembly::GetEntryAssembly icall.
29451         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
29452         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
29453
29454 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29455
29456         * appdomain.h, gc.c: added mono_domain_finalize ().
29457
29458 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29459
29460         * object.c:
29461         (mono_print_unhandled_exception): changed g_warning by g_printerr
29462         because g_log has a 1024 characters limit (yeah, i got a big stack
29463         trace). Don't print exception name, that should be in ToString 
29464         returned string.
29465
29466 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29467
29468         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
29469         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
29470
29471 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29472
29473         * object.c:
29474         (mono_print_unhandled_exception): after previous commit, i realized
29475         that MS calls ToString on the exception. I changed this function to
29476         do that. This way we get stack_trace for free.
29477
29478 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29479
29480         * object.c:
29481         (mono_print_unhandled_exception): invoke Message property instead of
29482         getting 'message' field from Exception. Don't allocate memory for
29483         'trace' and 'message' if not needed.
29484
29485 2002-08-18  Dick Porter  <dick@ximian.com>
29486
29487         * unicode.c: Fix asserts to match Encoder.cs checks
29488
29489 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29490
29491         * marshal.c: fix unaligned store issue and a few wrong
29492         opcode argument types.
29493
29494 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29495
29496         * icall.c: added GetUninitializedObjectInternal internal call.
29497
29498 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
29499
29500         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
29501         to the right domain.
29502
29503 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
29504
29505         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
29506
29507         * class.c (class_compute_field_layout): set blittable to false for Strings
29508
29509         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
29510
29511 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29512
29513         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
29514         first chunk of code to create types at runtime. Code to
29515         handle ReflectedType/DeclaringType. Make reflection handles
29516         domain specific.
29517
29518 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29519
29520         * class.c: set correct name in arrays.
29521
29522 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
29523
29524         * appdomain.c (mono_domain_transfer_object): make it work with
29525         valuetypes. bug fixes.
29526
29527 2002-08-12  Dick Porter  <dick@ximian.com>
29528
29529         * object.h: Rename some parameters to avoid c++ keywords (Patch
29530         from Joseph Wenninger <kde@jowenn.at>)
29531
29532 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
29533
29534         * icall.c: added icall to implement Assembly.GetFile*.
29535
29536 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29537
29538         * reflection.h, reflection.c: code to embed managed resources.
29539
29540 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29541
29542         * class.c: move all the type size stuff into
29543         class_compute_field_layout().
29544
29545 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29546
29547         * class.c: ensure enums have always the correct instance size.
29548         * unicode.c: remove wrong assert.
29549
29550 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29551
29552         * assembly.c: fix mem corruption issue.
29553         * image.h, image.c: added mono_image_get_resource () to access
29554         managed resources.
29555         * icall.c: implemented Assembly.EntryPoint property and some
29556         Managed Resources related internalcalls.
29557
29558
29559 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29560
29561         * image.c, image.h: impemented mono_image_get_entry_point ().
29562         * appdomain.c: use mono_image_get_entry_point.
29563
29564 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29565
29566         * reflection.c: support the object type argument when loading
29567         custom attributes.
29568
29569 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
29570
29571         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
29572         String as return type.
29573
29574 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
29575
29576         * reflection.c: fix encoding of named args for custom attrs to match
29577         the ms implementation. Read them back when instantiating custom
29578         attributes.
29579
29580 2002-08-02  Radek Doulik  <rodo@ximian.com>
29581
29582         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
29583         by Dietmar as quick fix
29584         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
29585         16 as stack size, used on more places as quick fix before Dietmar
29586         will fix it properly
29587
29588 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29589
29590         * object.h, object.c: added accessors for fields and properties.
29591
29592 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29593
29594         * class.c, class.h: made mono_class_get_field_from_name ()
29595         loop on parent types.
29596         Added mono_class_get_property_from_name ().
29597
29598 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29599
29600         * class.c, class.h: move the code to setup the type vtable in its own
29601         function so that it can be reused also for types created at runtime.
29602         Eliminate the "class" identifier from the header file.
29603         * reflection.c: setup the vtable for enums so that we can create
29604         objects for use in SetConstant ().
29605
29606 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
29607
29608         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
29609         instead of the delegate itself as this pointer (bug #28383)
29610
29611 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
29612
29613         * marshal.c (mono_marshal_get_managed_wrapper): added return type
29614         conversions.
29615
29616 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29617
29618         * loader.c: don't set the pinvoke bit on icalls.
29619
29620 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
29621
29622         * debug-helpers.c (mono_method_full_name): only print a number to
29623         indicate wrapper type (so that the output is more readable in traces).
29624
29625 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
29626
29627         * class.c (mono_class_init): include method override patch from Paolo
29628
29629 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
29630
29631         * icall.c: fixed GetTypeCode().
29632
29633 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
29634
29635         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
29636         use real delegate invoke function to make it work with multicast
29637         delegates (fix bug# 28291).
29638
29639 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29640
29641         * object.c: load constant strings.
29642
29643 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29644
29645         * reflection.c: no magic numbers.
29646         * tabledefs.h: security action enum.
29647
29648 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29649
29650         * assembly.c: fix possible memory corruption.
29651
29652 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29653
29654         * reflection.h, reflection.c: added support for linking resources.
29655         * verify.c: check we have an updated corlib.
29656
29657 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
29658
29659         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
29660         string arrays.
29661         (mono_marshal_string_array): null terminate unmanaged string arrays.
29662         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
29663
29664 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29665
29666         * icall.c: Type.GetType () can now return also types from the
29667         calling assembly.
29668
29669 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29670
29671         * loader.h, loader.c: stack walking support.
29672         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
29673         GetCallingAssembly.
29674
29675 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
29676
29677         * marshal.c: added optimisations for blittable types 
29678
29679         * class.c (mono_array_class_get): do not set blittable attribute on arrays
29680         (mono_class_setup_mono_type): set blittable attribute for single
29681         and double.
29682
29683         * marshal.c (mono_string_utf8_to_builder): impl.
29684         (mono_string_builder_to_utf8): impl.
29685         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
29686
29687 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
29688
29689         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
29690         (mono_marshal_get_managed_wrapper): impl. byref types
29691
29692 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29693
29694         * icall.c:
29695         (search_method): don't display debug message. 
29696
29697 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29698
29699         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
29700
29701 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29702
29703         * appdomain.c: set the missing filename when throwing exception.
29704
29705 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29706
29707         * metadata.c (mono_type_size): code cleanup
29708         (mono_type_stack_size): removed some test code
29709
29710 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
29711
29712         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
29713         mono_get_exception_file_not_found now.
29714
29715         * exception.c (mono_exception_from_name_two_strings): New version
29716         that will call a constructor with two string arguments. 
29717         (mono_get_exception_file_not_found): New helper routine, used to
29718         report file-not-found errors.
29719
29720 2002-07-20  Dick Porter  <dick@ximian.com>
29721
29722         * process.h:
29723         * process.c: Pass file handles to CreateProcess
29724         
29725         * icall.c:
29726         * file-io.h:
29727         * file-io.c: Implemented CreatePipe
29728
29729 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29730
29731         * metadata.c (mono_get_param_info): set alignment for value types
29732
29733 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29734
29735         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
29736         Constify mono_domain_assembly_open().
29737         * loader.c: handle null namespace in icalls.
29738
29739 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29740
29741         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
29742         (emit_str_to_ptr_conv): marshal object as structs
29743
29744         * metadata.c (mono_type_to_unmanaged): marshal object as structs
29745
29746         * marshal.c (mono_marshal_get_runtime_invoke): support value types
29747
29748 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
29749
29750         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
29751         (mono_marshal_get_native_wrapper): we an now return value types
29752
29753 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29754
29755         * verify.c: more checks implemented.
29756
29757 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
29758
29759         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
29760         (fix bug #27695)
29761         (mono_marshal_get_native_wrapper): allow byref arguments
29762         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
29763         impl. PtrToStringXXX methods
29764         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
29765         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
29766         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
29767         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
29768         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
29769
29770 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29771
29772         * reflection.c: fix buglet in parsing an assembly name.
29773
29774 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29775
29776         * marshal.c (emit_ptr_to_str_conv): first impl.
29777
29778 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29779
29780         * object.c, class.h: cache the vtable in the class as suggested by
29781         vargaz@freemail.hu (Zoltan Varga).
29782
29783 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29784
29785         * class.h, loader.c: added mono_field_from_token().
29786         * verify.c: first cut of type checking code.
29787
29788 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29789
29790         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
29791
29792 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
29793
29794         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
29795         (fix bug #27782)
29796         (mono_marshal_get_remoting_invoke): impl.
29797         (mono_delegate_begin_invoke): impl.
29798         (mono_mb_emit_save_args): impl.
29799         (mono_delegate_end_invoke): impl.
29800         (mono_marshal_get_delegate_begin_invoke):
29801         (mono_marshal_get_delegate_end_invoke):
29802         (mono_marshal_get_delegate_invoke): generate a special name for
29803         those methods (including the signature) and associate them whith
29804         the delegate class. 
29805
29806 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
29807
29808         * reflection.[ch]: 
29809         (mono_reflection_type_from_name): now it has a MonoImage parameter
29810         which is used as the default image to search the type in. If the image
29811         is NULL or getting the type from it fails, it defaults to corlib.
29812
29813         * icall.c: changed 1 call to mono_reflection_type_from_name to match
29814         new parameter.
29815
29816 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29817
29818         * reflection.c: update the parameter table index.
29819
29820 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29821
29822         * domain.c: don't include the mark byte in the string hash.
29823
29824 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29825
29826         * icall.cs: icall for Type.GetTypeCode ().
29827         * verify: a couple of fixes and disabled local initialization checks.
29828
29829 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
29830
29831         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
29832
29833         * debug-helpers.c (mono_method_full_name): print the type of the
29834         runtime wrapper
29835
29836         * metadata.c (mono_signature_hash): a hash function for signatures
29837         (mono_signature_hash): better hash algorithm
29838
29839         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
29840
29841         * debug-helpers.c (mono_method_full_name): this can now generate
29842         method names with signatures
29843
29844         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
29845         method dont have this pointers.
29846
29847 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29848
29849         * reflection.c: fixup typebuilder tokens.
29850         * image.c: fix buglet.
29851         * marshal.h: remove whitespace.
29852         * metadata.h, metadata.c: reinstate code that was removed.
29853         * verify.c: handle catch directives and fix another couple of bugs.
29854
29855 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
29856
29857         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
29858         (mono_marshal_get_native_wrapper): make it comp. with the old code
29859         (mono_marshal_get_native_wrapper): support boolean
29860         (mono_marshal_get_managed_wrapper): support more types
29861
29862 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
29863
29864         * class.c (class_compute_field_layout): compute class->blittable attribute.
29865
29866 2002-07-09  Dick Porter  <dick@ximian.com>
29867
29868         * threads.c: Make the thread cleaning up cope with threads that
29869         call ExitThread()
29870
29871 2002-07-08  Radek Doulik  <rodo@ximian.com>
29872
29873         * reflection.c (method_encode_code): use non-translated values to
29874         compute finally_start, this fixes exception handling on ppc, yay!
29875
29876         * decimal.h (struct signscale): fix endianess
29877
29878 2002-07-07  Radek Doulik  <rodo@ximian.com>
29879
29880         * reflection.c: swap box_val and not val
29881
29882 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29883
29884         * reflection.c, reflection.h: handle full assembly info in type name.
29885         Handle Type arguments when loading custom attributes.
29886         * icall.c: updated to use new mono_reflection_type_from_name () method.
29887
29888 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29889
29890         * loader.c:
29891         (method_from_memberref): also print assembly name when method not found.
29892
29893 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29894
29895         * icall.c:
29896         (ves_icall_TypeGetProperties): fixed bug #27473. 
29897
29898 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29899
29900         * reflection.c: display image name and token when cannot find the
29901         .ctor for an attribute.
29902
29903 2002-07-05  Martin Baulig  <martin@gnome.org>
29904
29905         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29906
29907 2002-07-04  Dick Porter  <dick@ximian.com>
29908
29909         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29910         compile on mingw.  This will cause mingw builds to not wait for
29911         subthreads to terminate after the main thread does.  I've lodged a
29912         bug with the mingw developers for them to wrap OpenThread().
29913
29914 2002-07-03  Dick Porter  <dick@ximian.com>
29915
29916         * threads.c: Store thread IDs instead of handles, because
29917         GetCurrentThread() returns a pseudohandle and therefore stores
29918         useless values.  mono_thread_cleanup() continues checking the
29919         array of threads until it is empty, to cope with subthreads
29920         spawning new threads after the main thread has finished.
29921
29922         * profiler.h:
29923         * profiler.c:
29924         * profiler-private.h: Pass the thread ID to thread profiler
29925         functions, instead of a handle
29926
29927 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29928
29929         * verify.c: fixes to make it more usable.
29930         * pedump.c: added --verify code to verify IL code in an assembly.
29931
29932 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29933
29934         * reflection.c: turn errors into warnings to allow compiling corlib.
29935
29936 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29937
29938         * reflection.c: add special cases to compile corlib.
29939
29940 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29941
29942         * reflection.c: handle properties with only a set method.
29943
29944 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29945
29946         * opcodes.h: add enum with opcodes in opval order.
29947
29948 2002-07-01  Dick Porter  <dick@ximian.com>
29949         
29950         * object.h:
29951         * object.c (mono_runtime_run_main): Removed unneeded argument
29952
29953 2002-06-28  Martin Baulig  <martin@gnome.org>
29954
29955         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29956
29957 2002-06-27  Dick Porter  <dick@ximian.com>
29958
29959         * threads.c: Store the handle in both the parent thread and in the
29960         subthread, to minimise the time between starting a new thread and
29961         storing its ID.
29962
29963 2002-06-26  Dick Porter  <dick@ximian.com>
29964
29965         * appdomain.c (mono_runtime_cleanup): Close the socket library
29966         after all the threads have finished, not before
29967
29968 2002-06-26  Martin Baulig  <martin@gnome.org>
29969
29970         * debug-symfile.c (mono_debug_find_source_location): Added
29971         `guint32 *line_number' argument.  If it's not NULL, store the line number
29972         there and return the file name without the line number.
29973
29974 2002-06-25  Dick Porter  <dick@ximian.com>
29975
29976         * icall.c:
29977         * process.h:
29978         * process.c: Process forking and other support functions
29979
29980 2002-06-25  Dick Porter  <dick@ximian.com>
29981
29982         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29983         things dont happen when the image is closed.
29984         (mono_image_lookup_resource): Walk the resource section looking
29985         for a particular entry
29986
29987         * cil-coff.h: PE resource section decoding
29988
29989 2002-06-25  Dick Porter  <dick@ximian.com>
29990         
29991         * assembly.h:
29992         * assembly.c: 
29993         (mono_assembly_foreach): Accessor functions to walk the list of
29994         loaded assemblies
29995         (mono_assembly_set_main):
29996         (mono_assembly_get_main): Process methods need to know which
29997         assembly is the "main" one
29998
29999         * object.c (mono_runtime_run_main): Record the main assembly
30000
30001         * debug-helpers.c: Fix typo
30002
30003 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
30004
30005         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
30006         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
30007
30008 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
30009
30010         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
30011
30012 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
30013
30014         * image.c (do_mono_image_open): Initialize reference count,
30015         otherwise we leak the MonoImage.
30016
30017 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
30018
30019         * reflection.c: small tweak to handle self-hosting.
30020
30021 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
30022
30023         * reflection.c: fix type name parse code.
30024
30025 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30026
30027         * reflection.c: break out of the loop.
30028         * image.c: special case corlib.
30029
30030 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30031
30032         * reflection.c: add all the custom attrs at the end to ensure the
30033         ctors have been properly initialized when the attributes are defined
30034         in the current assembly.
30035
30036 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
30037
30038         * reflection.c: handle correctly multiple-nested types.
30039
30040 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
30041
30042         * row-indexes.h: fix typos.
30043         * reflection.c: adjust for typos and fix method_def_or_ref
30044         encoding in MethodImpl table.
30045
30046 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30047
30048         * reflection.c: fix entry point patching (thanks Serge!).
30049
30050 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
30051
30052         * verify.c: add check for System.Exception
30053
30054 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
30055
30056         * image.c, class.c: minifix for code just c&p'ed.
30057         * reflection.c: warning fix.
30058         * object.h, loader.h, domain.c: load also StringBuilder.
30059
30060 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
30061
30062         * marshal.h, marshal.c: some support code to handle complex marshaling.
30063
30064 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30065
30066         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
30067         Better signatures with vtable error dump.
30068
30069 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
30070
30071         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
30072
30073 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
30074
30075         * icall.c (ves_icall_Type_GetField): impl.
30076
30077 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30078
30079         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
30080         to retrieve a marshal description blob for a field or param.
30081
30082 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
30083
30084         * reflection.h, reflection.c: change order of nested type emission
30085         to avoid table corruption. The NestedTypes table is sorted.
30086         * icall.c: change order of GetConstructor results to workaround mcs bug.
30087
30088 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30089
30090         * reflection.h, reflection.c: handle field and param marshal
30091         information.
30092
30093 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30094
30095         * icall.c, marshal.c marshal.h: more Marshal class implementation.
30096
30097 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30098
30099         * reflection.c: fix call convention.
30100
30101 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30102
30103         * reflection.h, reflection.c: mono_image_get_memberref_token()
30104         takes a type instead of a class, now. Added
30105         mono_image_get_array_token() to create tokens for the special
30106         multi-dim array methods.
30107
30108 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
30109
30110         * assembly.c: handle modules (no assembly table). Split
30111         loading references in its own function.
30112         * class.c: handle moduleref resolution scope.
30113         * image.c, image.h: cache module name in image.
30114
30115 2002-06-07  Martin Baulig  <martin@gnome.org>
30116
30117         * reflection.c (mono_image_get_type_info): Only add a class layout entry
30118         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
30119
30120 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
30121
30122         * icall.c: more signature fixes that used uint instead of int.
30123
30124 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30125
30126         * reflection.c: fixed signature of field refs.
30127
30128 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30129
30130         * class.c, reflection.c: handle typerefs of nested types
30131         (both on read and when writing files).
30132
30133 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
30134
30135         * icall.c: fix method signatures that tried to workaround the previous
30136         typo, d'oh!
30137
30138 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30139
30140         * debug-helpers.c: fix typo.
30141
30142 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30143
30144         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
30145         rewrote the PE/COFF writing code (our programs are understood by the
30146         ms runtime, now).
30147
30148 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
30149
30150         * gc.c, gc.h, icall.c: weakreference support.
30151
30152 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
30153
30154         * Makefile.am, mono-config.c: use $(sysconfdir).
30155
30156 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30157
30158         * icall.c: changed default precision of Double.ToString() to 15.
30159         Fixed memory leak. Unified with Single.ToString.
30160
30161 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
30162
30163         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
30164
30165 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
30166
30167         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
30168         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
30169         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
30170         and myself.
30171
30172 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30173
30174         * debug-symfile.c, sysmath.c: yet more compilation fixes.
30175
30176 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30177
30178         * reflection.c, socket-io.c: more compilation fixes.
30179
30180 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30181
30182         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
30183         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
30184         unicode.c: warning and compiler compatibility fixes.
30185
30186 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30187
30188         * class.h, metadata.c: fixed warnings/compilation errors.
30189
30190 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
30191
30192         * Makefile.am, mono-config.c, mono-config.h: configuration file
30193         support routines.
30194         * loader.c, loader.h: make Dll mapping configurable at runtime in the
30195         config file. Export methods to insert and lookup mappings.
30196
30197 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
30198
30199         * reflection.c: handle types and boxed objects in custom attr
30200         constructors.
30201
30202 2002-05-30  Martin Baulig  <martin@gnome.org>
30203
30204         * debug-symfile.c
30205         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
30206
30207 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
30208
30209         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
30210         to lookup the implmap row for a P/Invoke method.
30211         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
30212         P/Invoke method from the runtime on an as needed basis.
30213
30214 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
30215
30216         * metadata.c (mono_metadata_parse_signature): impl.
30217
30218 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30219
30220         * class.c: handle .pack directive.
30221
30222 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
30223
30224         * object.c: initialize static fields with RVA data.
30225
30226 2002-05-25  Martin Baulig  <martin@gnome.org>
30227
30228         * debug-symfile.c
30229         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
30230
30231 2002-05-24  Martin Baulig  <martin@gnome.org>
30232
30233         * debug-symfile.c
30234         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
30235         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
30236         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
30237
30238 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30239
30240         * object.c: special case string ctros in invoke.
30241         * gc.c: silly whitespace changes.
30242
30243 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
30244
30245         * threadpool.[ch]: impl. a threadpool that can
30246         be used by mint and mono.
30247
30248 2002-05-22  Martin Baulig  <martin@gnome.org>
30249
30250         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
30251         The first argument is now a `MonoReflectionModuleBuilder *', the return
30252         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
30253         `methods' field to get the method builder.  The `token' argument is the
30254         unfixed token.
30255
30256         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
30257         invalid characters instead of g_assert_not_reached()ing.  This seems
30258         to be the behaviour of mscorlib.
30259
30260 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
30261
30262         * object.c (mono_runtime_invoke_array): applied patch from Rachel
30263         Hestilow to fix bug #25104
30264
30265 2002-05-21  Martin Baulig  <martin@gnome.org>
30266
30267         * debug-symfile.c (mono_debug_find_source_location): New function.
30268         Looks up an IL offset in the line number table and returns the source
30269         location as a string.
30270
30271 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30272
30273         * icall.c:
30274         (mono_double_ToStringImpl): changed %f by %g until we have something
30275         better.
30276
30277 2002-05-21  Nick Drochak  <ndrochak@gol.com>
30278
30279         * icall.c : Use different name for Math.Pow's icall.  Needed to check
30280         parameters first in C#.
30281
30282 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30283
30284         * icall.c, reflection.h: added icall to get info about an event.
30285
30286 2002-05-20  Radek Doulik  <rodo@ximian.com>
30287
30288         * object.c (mono_value_box): don't use memcpy for boxing on BIG
30289         endian
30290         (mono_value_box): don't use memcpy for small sizes on
30291         architectures with unaligned access
30292
30293 2002-05-20  Martin Baulig  <martin@gnome.org>
30294
30295         * reflection.c (mono_reflection_setup_internal_class): Don't crash
30296         if `tb->parent == NULL'.
30297         (mono_reflection_create_internal_class): New function.  This is
30298         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
30299         for enum types.
30300
30301         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
30302         New interncall.
30303
30304 2002-05-19  Martin Baulig  <martin@gnome.org>
30305
30306         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
30307         argument to get the length, don't default to the array length.
30308
30309 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
30310
30311         * assembly.c (mono_assembly_setrootdir): New function used to
30312         override the MONO_ASSEMBLIES directory.
30313
30314 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30315
30316         * icall.c: ValueType_GetHashCode() initialize local var.
30317
30318 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30319
30320         * reflection.c: sort custom attributes table.
30321
30322 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
30323
30324         * reflection.c: support named args in custom attributes (write support).
30325
30326 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
30327
30328         * reflection.c: fix finally position calculation.
30329
30330 2002-05-15  Radek Doulik  <rodo@ximian.com>
30331
30332         * reflection.c: fixed endianess at many places
30333
30334         * icall.c (ves_icall_InitializeArray): comment out debug msg
30335
30336 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
30337
30338         * object.c (mono_unhandled_exception): new function to handle
30339         unhandled exceptions.
30340         (mono_unhandled_exception): call the UnhandledException event.
30341         (mono_runtime_delegate_invoke): impl.
30342
30343 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
30344
30345         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
30346         returns the RVA, not the direct pointer to the data. Handle the case
30347         when the class size is fixed.
30348
30349 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
30350
30351         * reflection.c: fix some endianess issues.
30352
30353 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
30354
30355         * object.c (mono_runtime_invoke): is now able to catch exceptions.
30356
30357         * threads.c (mono_thread_init): added a callback which is invoked
30358         at thread start.
30359
30360 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
30361         
30362         * icall.c: make GetHashCode return non-negative values.
30363
30364 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
30365
30366         * object.c, icall.c, gc.c: revert to address-based hashcode.
30367
30368 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
30369
30370         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
30371
30372 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30373
30374         * icall.c, class.c: special case <Module>.
30375
30376 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
30377
30378         * icall.c: fix bug in GetNow().
30379
30380 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
30381
30382         * object.c (mono_runtime_class_init): make sure that we call all
30383         static class constructors.
30384
30385 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
30386
30387         * reflection.c: sort methodsemantics table.
30388
30389 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
30390
30391         * reflection.h, reflection.c: honour init locals setting.
30392
30393 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
30394
30395         * icall.c: copied Double ToStringImpl for Single ToStringImpl
30396
30397 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30398
30399         * reflection.c: support ContructorBuilders in attribute blob creation.
30400
30401 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30402
30403         * reflection.c: some changes to build a binary that can be run
30404         directly in windows.
30405
30406 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
30407
30408         * loader.c: print a big message when an icall can't be found.
30409
30410 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30411
30412         * string-icalls.c: fix bug 24248.
30413
30414 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
30415
30416         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
30417         icall.c, reflection.h: separate assembly loading by pathname and by
30418         assembly name. Use the MONO_PATH env var to search for assemblies.
30419
30420 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30421
30422         * assembly.c, image.h: add some support for assemblies
30423         with multiple modules.
30424         * class.c, class.h: export mono_class_from_typeref().
30425         * loader.c: remove duplicated code and use mono_class_from_typeref(),
30426         instead.
30427
30428 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
30429
30430         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
30431         documentation says (the ECMA one is correct).
30432
30433 2002-05-02  Dick Porter  <dick@ximian.com>
30434
30435         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
30436         Don't name the synchronisation mutex.
30437
30438 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
30439
30440         * rand.c
30441         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
30442         Make the prototypes match.
30443         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
30444         Same.
30445
30446         * icall.c
30447         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
30448         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
30449         all systems have tm.tm_zone, so use strftime() with %Z to print
30450         the timezone abreviation into a temp string.
30451
30452         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
30453         rather than mono_array_addr() on a MonoString on Big Endian
30454         machines.
30455
30456 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
30457
30458         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
30459         fix bug 24041
30460
30461 2002-04-30  Dick Porter  <dick@ximian.com>
30462
30463         * socket-io.c: Cope with SOCKET being an integer rather than a
30464         pointer now.
30465
30466         * threads.c: Added Thread_free_internal, to deal with thread
30467         handle cleanup.  Moved calls to handle_store() and handle_remove()
30468         to start_wrapper(), so each can only be called once.  Allocate
30469         synchronisation blocks with GC_malloc(), and use GC finalisation
30470         to close the handles.
30471
30472         * icall.c: added System.Threading.Thread::Thread_free_internal
30473
30474 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30475
30476         * icall.c: support Environment.Exit, CommandLineArgs().
30477
30478 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30479
30480         * object.c, object.h: added mono_runtime_run_main () and
30481         mono_runtime_get_main_args () for use in System.Environment.
30482
30483 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
30484
30485         * gc.c: fix thinko, enable actual finalization since the jit is now
30486         fixed.
30487
30488 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30489
30490         * gc.c, object.c: take into account that an object may be offset wrt the address
30491         returned by GC_malloc().
30492
30493 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
30494
30495         * image.c: handle files without entries in the assembly table (modules).
30496
30497 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
30498
30499         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
30500         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
30501         allowed to be null when it's System.Object class setup.
30502
30503 2002-04-27  Martin Baulig  <martin@gnome.org>
30504
30505         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
30506         if `tb->parent == NULL' rather than crashing.
30507
30508 2002-04-28  Nick Drochak  <ndrochak@gol.com>
30509
30510         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
30511         calling acos() where asin() should have been called.
30512
30513 2002-04-26  Martin Baulig  <martin@gnome.org>
30514
30515         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
30516         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
30517         there's a subdirectory called `System', but we don't want to read that
30518         subdirectory as an assembly.
30519
30520 2002-04-25  Martin Baulig  <martin@gnome.org>
30521
30522         * debug-symfile.c: Reflect latest MonoString changes.
30523
30524 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
30525
30526         * rand.c, rand.h: instance method icalls need to have an explicit
30527         this pointer as first argument in the C implementation.
30528
30529 2002-04-25  Nick Drochak <ndrochak@gol.com>
30530
30531         * icall.c: Fix typo in map for GetNonZeroBytes
30532
30533 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30534
30535         * string-icalls.c : String does now passes unit tests without any 
30536         errors, the following changes has been made:
30537         
30538         Implemented replace methods.
30539         Renaming of methods to (try) follow the standard.
30540         Fixed compare ordinal
30541         Made all memory allocated directly to function instead of via icall function.
30542         Small performance fix in is_in_array function
30543                         
30544  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
30545
30546         c (mono_string_Internal_ctor_charp_int_int):
30547         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
30548         sindex < 0, throw ArgumentOutOfRangeException instead of
30549         ArgumentNullException.
30550
30551         Added new check for length == 0, however
30552         I need to make it return String.Empty from the C code.
30553         
30554         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
30555         that calculate the length for us here.
30556         
30557         (mono_string_Internal_ctor_sbytep_int_int): Replaced
30558         mono_string_new_utf16 with mono_string_new, since value is utf8.
30559
30560 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30561
30562         * object.c: register the object for finalization if needed.
30563         Allocate one more char in the string for the terminating 0 char.
30564
30565 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30566
30567         * class.c, class.h, image.c: check if a type implemenst a destructor.
30568         Use the proper key for array class lookups.
30569         * icall.c: register the icalls in the System.GC class.
30570         * gc.c, gc.h: GC-related functions and icalls.
30571
30572 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30573
30574         * icall.c:
30575         * socket-io.c:
30576         * unicode.c: free some strings gotten from mono_string_to_utf8 and
30577         changed a couple of free () by g_free ().
30578
30579         * decimal.c: one-liner in the comments for decimal2string ().
30580
30581 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30582
30583         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
30584
30585 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30586
30587         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
30588         * object.c (mono_runtime_invoke_array) : handle null in params
30589
30590 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30591
30592         * string-icalls.c: fixed bug in split (one off bug)
30593
30594 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30595
30596         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
30597         * icalls.c: added String::Equals as internal method
30598
30599 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30600
30601         * threads.c: fixed bug in the double interlocked functions
30602
30603 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
30604
30605         * threads.c: implemented all of the new interlocked icalls.
30606         * string-icalls.c: fix a bug in insert.
30607         * icalls.c: added the icalls for interlocked, removed old string functions.
30608         
30609 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30610
30611         * loader.c: fix off-by-one error when reading argument names.
30612
30613 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30614
30615         * profiler.c: win32 counter implementation (untested).
30616         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
30617         (the latter needs testing and more complete impl. from win32 folks).
30618
30619 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
30620
30621         * object.c: mono_array_new_full workaround mono_array_class_get
30622         problem.
30623
30624 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30625
30626         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
30627         * object.h (mono_string_chars): Changed casting type.
30628
30629 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30630
30631         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
30632                            method signatures to use gunichar2 instead of gint16.
30633
30634 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
30635
30636         * object.h, object.c: domain-specific versions of mono_object_new and
30637         mono_array_new.
30638
30639 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
30640
30641         * object.c: changed String layout
30642
30643         * string-icalls.c (mono_string_Internal_ctor_chara): added
30644         internal string constructors.
30645
30646 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
30647
30648         * threads.c: pass 'this' to the thread start routine.
30649
30650 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30651
30652         * string-icalls.c: fix IndexOf and LastIndexOf. Now
30653         InternalCompareStr don't call twice mono_string_cmp_char for the last
30654         character. Improved performance in mono_string_cmp_char.
30655
30656 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30657
30658         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
30659         code into its own library: libmonoruntime.
30660
30661 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
30662
30663         * object.h, object.c: changed array format so that szarrays do not
30664         require a bounds structure.
30665         * icall.c, appdomain.c: support for new szarray format.
30666
30667 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
30668
30669         * metadata.c: compare also the retuns type when comparing signatures:
30670         we didn't do this as an optimization since really overloaded methods
30671         must differ also in the arguments, but this doesn't work with
30672         low-level IL code (or when using explicit conversion operators: see
30673         bug#23498 for an example).
30674
30675 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30676
30677         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
30678
30679 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
30680
30681         * icall.c: make MonoType::GetElementType its own icall.
30682
30683 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30684
30685         * icall.c: remove MonoMethod_get_Name().
30686         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
30687         object.
30688
30689 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30690
30691         * string-icalls.c: optimized a few methods.
30692
30693 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30694
30695         * icall.c: added all new string internal calls
30696         * string-icalls.c: added, new string internal call implementation.
30697         * object.c: added mono_string_new_size for allocating a string a size
30698
30699 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
30700
30701         * object.c (mono_object_isinst): use the same code as in the
30702         optimized x86 version.
30703
30704 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30705
30706         * profiler.c: TSC-based timer code (faster and more accurate).
30707         Not hooked up in configure, yet (set USE_X86TSC to 1).
30708
30709 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
30710
30711         * profiler.c, profiler.h: track time spent compiling methods.
30712         * threads.c: track thread creation/destruction.
30713
30714 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
30715
30716         * profiler.c, profiler.h, profiler-private.h: profiling interface
30717         and sample implementation. Moved here so that it can be used also by
30718         the jit.
30719
30720 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
30721
30722         * reflection.c, reflection.h: keep types and other handles separate in
30723         the hash tables for referred tokens. Add guid for modules.
30724
30725 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30726
30727         * assembly.c: fix bugs found with valgrind.
30728         * metadata.h, metadata.c: added mono_metadata_guid_heap().
30729
30730 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
30731
30732         * threads: added icall support for getting current domain for
30733                    the thread.
30734  
30735 2002-04-13  Martin Baulig  <martin@gnome.org>
30736
30737         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
30738         (MonoDebugVarInfo): Added `index' field for register based addresses.
30739         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
30740         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
30741         `MonoDebugVarInfo *params' and `guint32 this_offset' with
30742         `MonoDebugVarInfo *this_var'.
30743
30744         * debug-symfile.c (relocate_variable): New static function to write
30745         a location description for a local variable or method parameter.
30746
30747 2002-04-12  Martin Baulig  <martin@gnome.org>
30748
30749         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
30750         stack offset and begin/end scope address of a local variable.
30751         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
30752         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
30753         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
30754
30755         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
30756         Added new relocation types for start/end scope of a local variable.
30757
30758 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30759
30760         * object.h: add mono_object_domain() macro.
30761         * reflection.c: handle typespecs.
30762         * icall.c: MonoMethod::get_Name() implementation.
30763
30764 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30765
30766         * icall.c: String::GetHashCode() icall implementation.
30767
30768 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30769
30770         * icall.c: String::IndexOfAny icall.
30771         * object.c, object.h: make array->max_length more useful.
30772         Intrduced mono_object_class() and mono_string_length() macros.
30773
30774 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30775
30776         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
30777         instead of g_unichar_isdigit.
30778
30779 2002-04-11  Nick Drochak  <ndrochak@gol.com>
30780
30781         * icall.c: Implement a simple Double.ToString().
30782
30783 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30784
30785         * appdomain.h: only io-layer.h is supposed to be included.
30786         * icall.c: explicitly import environ. Fix warning.
30787
30788 2002-04-10  Nick Drochak  <ndrochak@gol.com>
30789
30790         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
30791                 return true even if it's not Daylight Savings time.
30792                 Only return false for the case where the function isn't
30793                 implemented for a plaform (read Windows).
30794
30795 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30796
30797         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
30798         data with a mutex.
30799
30800 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
30801
30802         * mempool.c (mono_mempool_alloc): only use g_malloc when
30803         absolutely necessary.
30804
30805 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30806
30807         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
30808
30809         * class.c (mono_class_vtable): use domain mempool to allocate vtable
30810         (mono_class_proxy_vtable): use domain mempool
30811
30812 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30813
30814         * appdomain.h, appdomain.c: split initialization that requires the
30815         execution engine support into mono_runtime_init().
30816
30817 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30818
30819         * class.c (mono_class_init): don't include vtable inside MonoClass
30820         to save some memory, gather some statistics.
30821         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
30822
30823 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30824
30825         * icall.c: internalcall implementation for ValueType.Equals().
30826
30827 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
30828
30829         * object.c (mono_message_init): moved 
30830         (mono_runtime_exec_main): new arch. independent impl.
30831         (mono_runtime_invoke_array): new method - like
30832         mono_runtime_invoke, but you can pass an array of objects.
30833         (mono_remoting_invoke): new arch. independent impl.
30834         (mono_message_invoke): new arch. independent impl.
30835         (mono_runtime_class_init): new arch. independent impl.
30836         (mono_runtime_object_init): new arch. independent impl.
30837
30838 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30839
30840         * metadata.c, object.c, reflection.c: documented the exported
30841         functions.
30842
30843 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30844
30845         * icall.c: simpler code to pass the assembly builder data to corlib.
30846         Implement GetNestedTypes() internalcall.
30847
30848 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30849
30850         * class.c: warn if a type can't be loaded.
30851
30852 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
30853
30854         * image.h: typedef MonoImageOpenStatus
30855         * types.h: removed unused file
30856         
30857 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
30858
30859         * icall.c: Enum_ToObject accepts enum value arguments.
30860
30861 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30862
30863         * class.c: move initialization of properties, events and nested
30864         classes, so that they happen for interfaces, too.
30865
30866 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30867
30868         * icall.c: cleanup some ugly casts in Array_SetValue*.
30869
30870 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30871
30872         * icall.c: the values array fro enums is of the correct type, now.
30873         Implement (correctly) getFullName instead of assQualifiedName for
30874         MonoType.
30875         * reflection.h, reflection.c: added mono_type_get_name ().
30876
30877 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30878
30879         * assembly.c, image.h: for each MonoImage, record from wich assembly
30880         it was loaded.
30881         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
30882         Make Type.Assembly work.
30883
30884 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
30885
30886         * debug-symfile.h: use char* instead of gpointer to avoid
30887         unnecessary casts.
30888
30889         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30890
30891         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30892         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30893
30894 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30895
30896         * icall.c (mono_message_init): impl. (code cleanup)
30897         (ves_icall_InternalExecute): impl. FieldGetter
30898
30899         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30900         defined we call all (non-static)methods through the vtable. 
30901
30902 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30903
30904         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30905         finalizer even though the memory is still referenced (and the chunk of
30906         memory is not freed).
30907
30908 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30909
30910         * assembly.c: fix brokeness.
30911
30912 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30913
30914         * class.c: kill some warnings. Check explicit interface method
30915         implementation also without considering the namespace.
30916         Load also literal strings in static class data.
30917
30918 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30919
30920         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30921         (default_assembly_name_resolver): Make the resolver take the
30922         "base" directory where the assembly was originally defined, so we
30923         can load DLLs that are in the same directory as the assembly that
30924         is being referenced.
30925
30926 2002-03-28  Dick Porter  <dick@ximian.com>
30927
30928         * file-io.h: 
30929         * file-io.c:
30930         * socket-io.c: 
30931         * unicode.h: 
30932         * unicode.c: Warning cleanups
30933
30934 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30935
30936         * object.h, reflection.h: use the correct type instead of MonoObject.
30937
30938 2002-03-28  Martin Baulig  <martin@gnome.org>
30939
30940         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30941         (mono_debug_update_symbol_file): Initialize classes if necessary.
30942
30943 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30944
30945         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30946         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30947
30948 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30949
30950         * assembly.h: fix function prototype.
30951         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30952         * mono-endian.h: use const cast.
30953
30954 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30955
30956         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30957
30958 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30959
30960         * loader.c: don't assert when a typeref can't be loaded, give
30961         a chance to the runtime to trow an exception instead.
30962         * loader.h: fix warning.
30963
30964 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30965
30966         * class.c (mono_class_proxy_vtable): added proxy support
30967
30968 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30969
30970         * icall.c: removed last of PAL calls, added System.Environment
30971         * file-io.h, file-io.c: MonoIO implementation
30972         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30973
30974 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30975
30976         * appdomain.c: do not use the byte marker in ldstr table lookup.
30977         * debug-helpers.c: allow two ':' to separate class and method name.
30978         * object.c: allocate arrays bounds with the GC, too.
30979         * verify: add a few more checks.
30980
30981 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30982
30983         * reflection.c: output also literal strings. Allocate parameter data
30984         with GC_malloc() (thanks, Martin, for catching this!).
30985
30986 2002-03-26  Martin Baulig  <martin@gnome.org>
30987
30988         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30989         include the `this' offset in the `param_offsets'.
30990
30991 2002-03-25  Martin Baulig  <martin@gnome.org>
30992
30993         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30994         mono_debug_get_class() function to get the classes. Added new
30995         relocation types for arrays and strings.
30996         (mono_debug_get_class): New static function to search in all
30997         referenced assemblies for a metadata token.
30998
30999         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
31000
31001 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
31002
31003         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
31004         hold gc-allocated objects. Make the string heap a stream like the
31005         others. Removed duplicated code when writing stream info.
31006         Added asserts to catch possible buffer overflows. Set the sorted map
31007         for tables that need sorting. Added some documentation.
31008
31009 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
31010
31011         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
31012         for interned strings and vtables.
31013
31014 2002-03-24  Martin Baulig  <martin@gnome.org>
31015
31016         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
31017         it in the array since it was created with g_slist_prepend().
31018
31019 2002-03-24  Martin Baulig  <martin@gnome.org>
31020
31021         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
31022         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
31023         (mono_debug_method_from_token): Renamed to
31024         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
31025         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
31026
31027         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
31028         relocation types.
31029
31030         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
31031
31032 2002-03-24  Martin Baulig  <martin@gnome.org>
31033
31034         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
31035         (mono_debug_method_from_token): New func.
31036
31037         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
31038         New interncall, calls mono_debug_local_type_from_signature().
31039         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
31040         calls mono_debug_method_from_token().
31041
31042 2002-03-23  Martin Baulig  <martin@gnome.org>
31043
31044         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
31045         specifies the number of bytes to be converted, not the array size.
31046         Return the number of chars, not the number of bytes.
31047         (ves_icall_iconv_get_chars): The `byteCount' argument
31048         specifies the number of bytes to be converted, not the array size.
31049
31050 2002-03-23  Martin Baulig  <martin@gnome.org>
31051
31052         * reflection.h (MonoReflectionSigHelper): New type.
31053
31054         * reflection.c (mono_reflection_sighelper_get_signature_local),
31055         (mono_reflection_sighelper_get_signature_local): New functions.
31056
31057         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
31058         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
31059         interncalls.
31060
31061 2002-03-23  Martin Baulig  <martin@gnome.org>
31062
31063         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
31064         is_writeable is set.
31065         (mono_raw_buffer_update): New function to write the modified map
31066         back to disk.
31067
31068         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
31069
31070         * debug-symfile.c (mono_debug_update_symbol_file): Call
31071         mono_raw_buffer_update() when done writing.
31072
31073 2002-03-23  Martin Baulig  <martin@gnome.org>
31074
31075         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
31076
31077         * debug-symfile.c: Added support for arguments and local variables.
31078
31079 2002-03-23  Dick Porter  <dick@ximian.com>
31080
31081         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
31082         protected by ifdefs, hence breaking the w32 build.
31083
31084 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31085
31086         * object.c: implement is_interned() the right way.
31087
31088 2002-03-21  Martin Baulig  <martin@gnome.org>
31089
31090         * debug-symfile.[ch]: New files to handle debugging information
31091         files. There's also support to dynamically update these symbol
31092         files to include machine dependent information.
31093
31094 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
31095
31096         * threads.c (mono_thread_create): new function to create thread
31097         from C
31098
31099 2002-03-20  Martin Baulig  <martin@gnome.org>
31100
31101         * icall.c (ves_icall_InternalInvoke): Create a new object if the
31102         method is a constructor.
31103         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
31104         points to ves_icall_InternalInvoke().
31105
31106 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
31107
31108         * file-io.c: Flush shouldn't throw exceptions.
31109
31110 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
31111
31112         * file-io.c: FileStream flush support; FileSetLength now
31113         restores file pointer.
31114
31115 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
31116
31117         * class.c: set image for pointer classes.
31118
31119 2002/03/19  Nick Drochak <ndrochak@gol.com>
31120
31121         * sysmath.c: Forgot one.
31122
31123 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
31124
31125         * sysmath.c: Avoid redefining existing names.
31126
31127 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
31128
31129         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
31130         handled by runtime as icall rather than dllimport from libm.so
31131         * file-io.c, file-io.h: fixed handle argument type.
31132
31133 2002-03-18  Dick Porter  <dick@ximian.com>
31134
31135         * reflection.c (mono_image_get_type_info): rename interface to
31136         iface, because of "#define interface struct" on windows.
31137
31138 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
31139
31140         * class.c, class.h: rename and export mono_ptr_class_get().
31141         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
31142         * reflection.c, reflection.h, icall.c: better/saner type name
31143         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
31144         method signatures.
31145
31146 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
31147
31148         * class.c (mono_class_init): removed hardcoded GHC_SLOT
31149
31150         * icall.c (ves_icall_InternalInvoke): impl.
31151
31152 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
31153
31154         * reflection.c: output the interface map table, too.
31155
31156 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
31157
31158         * class.c (class_compute_field_layout): separate computation of 
31159         static field layout
31160
31161 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
31162
31163         * icall.c: added System.Buffer support.
31164         * file-io.c: moved file icalls from PAL to FileStream.
31165
31166 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
31167
31168         * icall.c (ves_icall_System_Object_GetHashCode): impl.
31169
31170 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
31171
31172         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
31173
31174 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31175
31176         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
31177
31178 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
31179
31180         * debug-helpers.{c,h}: moved here from monograph some useful functions
31181         to locate a method by name/signature in a class or image. Included
31182         also a small and flexible IL disassembler.
31183
31184 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
31185
31186         * reflection.c: fixup tokens in methods with small header size, too.
31187
31188 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
31189
31190         * object.c (mono_string_to_utf8): remove assert(!error), instead
31191         print a warning. 
31192
31193 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
31194
31195         * icall.c: update to the new mono_Array_class_get interface.
31196
31197 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
31198
31199         * appdomain.c, object.c: Boehm-GC enable.
31200         * icall.c: make get_data_chunk() support split data requests.
31201         Ensure a class is initialized in more cases. Return only the first
31202         property found in GetProperties() or the compiler gets confused. 
31203         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
31204         * reflection.h, reflection.c: add fixup mechanism for field and method
31205         tokens. Initialize assembly->typeref in a single place. Output
31206         properties after events. Support custom attributes for events, too.
31207         Typo fix for paramter custom attrs.
31208
31209 2002-03-07  Martin Baulig  <martin@gnome.org>
31210
31211         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
31212
31213 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
31214
31215         * class.c (mono_array_class_get): fix. for multi. dim. arrays
31216
31217 2002-03-06  Martin Baulig  <martin@gnome.org>
31218
31219         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
31220         non-zero lower bounds. See testcases #F10-#F13.
31221
31222 2002-03-05  Martin Baulig  <martin@gnome.org>
31223
31224         * exception.c (mono_get_exception_argument_out_of_range): New exception.
31225
31226         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
31227         ves_icall_System_Array_GetValue(), only calculate the absolute array position
31228         here.
31229         (ves_icall_System_Array_SetValue): Likewise.
31230         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
31231         as argument and does the actual work. This function is used when copying a
31232         multi-dimensional array.
31233         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
31234         now do all the widening conversions of value types.
31235         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
31236
31237 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31238
31239         * class.c: remove some magic numbers and use the smbolic names,
31240         instead. Added init_events() to load event info at class init time.
31241         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
31242         and mono_metadata_methods_from_event().
31243         * reflection.h, reflection.c: added support for writing out the evnets
31244         related information.
31245
31246 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
31247
31248         * reflection.h, icall.c: use a different method (GetInterfaces)
31249         to gather interface info and add isbyref, isprimitive and
31250         ispointer to the ves_icall_get_type_info() return value.
31251
31252 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
31253
31254         * class.h: stared adding support for events.
31255         * icall.c: split find_members implementation. Added debug icall to get
31256         the address of an object.
31257         * reflection.c: handle TypeBuilders in mono_type_get_object().
31258
31259 2002-03-01  Martin Baulig  <martin@gnome.org>
31260
31261         * icall.c (ves_icall_System_Array_GetLength): This must throw an
31262         ArgumentOutOfRangeException(), not an ArgumentException().
31263         (ves_icall_System_Array_GetLowerBound): Likewise.
31264         (ves_icall_System_Array_GetValue): Improved argument checking.
31265         (ves_icall_System_Array_SetValue): Improved argument checking.
31266
31267 2002-03-01  Martin Baulig  <martin@gnome.org>
31268
31269         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
31270         called with invalid arguments rather than just dying with g_assert().
31271         (ves_icall_System_Array_SetValue): Likewise.
31272         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
31273         raise a NotImplementedException instead.
31274         (ves_icall_System_Array_GetLength): Added argument checking.
31275         (ves_icall_System_Array_GetLowerBound): Added argument checking.
31276
31277 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
31278
31279         * object.h (mono_assert): new macros mono_assert and
31280         mono_assert_not_reached
31281
31282 2002-02-28  Martin Baulig  <martin@gnome.org>
31283
31284         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
31285         and "System::String::IsInterned" to "System::String::_IsInterned".
31286
31287 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
31288
31289         * icall.c: remove hacks for typebuilder. Added icall to create a
31290         modified type from a tybebuilder.
31291         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
31292         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
31293         to create a backing MonoClass for a TypeBuilder.
31294
31295 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
31296
31297         * class.c, class.h: more refactoring of class init.
31298         Export mono_class_setup_mono_type() and mono_class_setup_parent().
31299
31300 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
31301
31302         * marshal.c, marshal.h: start of marshaling interface.
31303
31304 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
31305
31306         * icall.c: fix order in assembly qualified name icall.
31307
31308 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
31309
31310         * class.c: do not free str, since we store it in the hash table.
31311         * reflection.h: add label field to MonoILExceptionInfo.
31312         * reflection.c: handle references to more than one assembly. Handle
31313         case when there isn't a module created in the assembly.
31314
31315 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
31316
31317         * class.c: Fix typo. Start refactoring of class init code.
31318
31319 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
31320
31321         * appdomain.c: exit with 1 on error.
31322         * class.c: we already have the name in MonoClassField.
31323         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
31324         MonoStreamHeader instead of an offset of image->raw_metadata.
31325
31326 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
31327
31328         * appdomain.c (mono_init): Be even more descriptive about the error.
31329
31330 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
31331
31332         * appdomain.c: give the user an informative message when corlib can't
31333         be loaded.
31334
31335 2002-02-26  Martin Baulig  <martin@gnome.org>
31336
31337         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
31338         New icall to get the time zone data.
31339
31340 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
31341
31342         * reflection.c: set virtual and raw size of section correctly.
31343         * threads.c: transfer domain information to newly created threads.
31344
31345 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
31346
31347         * class.c: when instancing a class in a domain, load the default
31348         vaules for static fields from the constant table. Fix System.Enum to
31349         not be an enum.
31350         * icall.c: implement Object::GetType() internalcall. Implemented
31351         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
31352         Fixed checking of binding flags in find_members().
31353         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
31354         * reflection.c: handle enumerations when writing to the constant
31355         table. Use a different object cache for types.
31356
31357
31358 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
31359
31360         * object.c (mono_object_isinst): fix for arrays
31361
31362         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
31363
31364 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
31365
31366         * object.c: don't use mprotect ()  and fix intern pool hash table
31367         lookup for big endian systems.
31368
31369 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
31370
31371         * icall.c: change type_is_subtype_of () signature.
31372
31373 2002-02-21  Mark Crichton  <crichton@gimp.org>
31374
31375         * rand.c, rand.h: Added random number generator for
31376         System.Security.Cryptography classes.
31377
31378         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
31379
31380         * icall.c: Added System.Security.Cryptography calls.
31381
31382 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
31383
31384         * class.c, icall.c, metadata.c: better support for pointer types.
31385         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
31386         * reflection.c: Add support for getting custom attrs for properties
31387         and simplify some code.
31388
31389 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
31390
31391         * icall.c: change getToken () and add custom attribute GetBlob()helper
31392         method.
31393         * reflection.h: add custom attrs array to the reflection builder structures.
31394         * reflection.c: encode and emit custom attributes for all the relevant
31395         reflection objects. Cache fieldref and methodref tokens. Change
31396         mono_image_create_token() interface to take a MonoDynamicAssembly.
31397         More complete custom attributes decoder. Load custom attributes for
31398         Assembly, Field, Method and Constructor objects, too. Make the
31399         returned array an Attribute[] one, not object[]. Added
31400         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
31401         custom attribute constructor.
31402
31403 2002-02-20  Dick Porter  <dick@ximian.com>
31404
31405         * icall.c:
31406         * rawbuffer.c:
31407         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
31408         problem code out for now).
31409
31410 2002-02-19  Radek Doulik  <rodo@ximian.com>
31411
31412         * object.c (mono_ldstr): use hash table to avoid multiple swapping
31413
31414 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
31415
31416         * icall.c: register the GetCustomAttributes method.
31417         * object.c, object.h: add mono_string_new_len ().
31418         * reflection.h, reflection.c: added mono_runtime_invoke(),
31419         mono_install_runtime_invoke(). Added
31420         mono_reflection_get_custom_attrs () to load custom attributes and
31421         create the attribute objects.
31422
31423 2002-02-19  Dick Porter  <dick@ximian.com>
31424         * threads-dummy-types.c:
31425         * threads-dummy-types.h:
31426         * threads-dummy.c:
31427         * threads-dummy.h:
31428         * threads-pthread-types.c:
31429         * threads-pthread-types.h:
31430         * threads-pthread.c:
31431         * threads-pthread.h:  Deleted obsolete files
31432
31433 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
31434
31435         * class.c (mono_class_vtable): runtime init the class when we
31436         allocate static class data.
31437
31438         * icall.c (ves_icall_System_Array_SetValue): check for null values.
31439
31440         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
31441         and String - but we will need generic marshalling support in the
31442         future. 
31443         (mono_init): set the domain name in a ms compatible way
31444
31445         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
31446         String[].
31447
31448 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
31449
31450         * object.c (mono_array_clone): use alloca() instead of g_malloc  
31451         for sizes
31452
31453         * appdomain.c (mono_domain_unload): impl.
31454
31455 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
31456
31457         * appdomain.c, object.c: fix intern pool implementation.
31458         * class.c: fix alignment code.
31459
31460 2002-02-16  Radek Doulik  <rodo@ximian.com>
31461
31462         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
31463         and s2 > s1, just copy lower bytes to be compatible with little
31464         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
31465         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
31466
31467         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
31468         force big_endian to be 1 for big endian machines 
31469         (ves_icall_iconv_new_decoder): ditto
31470
31471 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
31472
31473         * socket-io.c (convert_sockopt_level_and_name): If the system
31474         doesn't define SOL_IP or SOL_TCP, get them by hand using
31475         getprotobyname() and caching the values (because this could be a
31476         slow operation).
31477         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
31478         Use the appropriate struct when the system does support it. Ie,
31479         not all systems have struct ip_mreqn so use struct ip_mreq when
31480         appropriate.
31481
31482 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
31483
31484         * reflection.c: handle finally clauses.
31485
31486 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
31487
31488         * socket-io.c: use g_snprintf() instead of snprintf.
31489
31490 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
31491
31492         * reflection.c (mono_param_get_objects): Cast second argument to
31493         mono_method_get_param_names to a const char** to silence the
31494         compiler warning.
31495
31496         * appdomain.c (mono_domain_assembly_open): Put parens around the
31497         truth statement in the for-loop.
31498
31499         * unicode.c (iconv_convert): Got rid of a compiler warning about
31500         int i being unused when the system has a new iconv.
31501         (iconv_get_length): Same.
31502
31503         * image.c (load_class_names): Cast the second argument to
31504         g_hash_table_insert() to char* to hush compiler warnings about the
31505         arg being a const.
31506         (mono_image_open): Same here.
31507
31508         * socket-io.c: Don't conditionally include sys/filio.h or
31509         sys/sockio.h here anymore since we now get them from
31510         io-layer/io-layer.h
31511         (inet_pton): If the system doesn't support inet_aton, implement
31512         using inet_addr and also #define INADDR_NONE if it isn't defined
31513         by the system.
31514
31515 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
31516
31517         * metadata.c, metadata.h: added function to get packing and size info
31518         of a typedef.
31519         * reflection.h, reflection.c: handle field RVA data. Save info about
31520         the table layout if needed. Assign typedef indexes to all the types
31521         before dumping the info about them to avoid forward reference problems.
31522
31523 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
31524
31525         * socket-io.c (convert_sockopt_level_and_name): ifdef
31526         SO_ACCEPTCONN because it is not defined on my system (old debian)
31527
31528 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
31529
31530         * opcode.c: use stddef.h to get NULL.
31531
31532 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
31533
31534         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
31535         for FIONBIO, FIONREAD and SIOCATMARK.
31536         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
31537         define INADDR_NONE and besides, inet_addr() is deprecated and
31538         should not be used. Use inet_pton() instead - it also has the
31539         added bonus that it can easily handle IPv6 addresses as well.
31540         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
31541
31542 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
31543
31544         * decimal.c: remove _MSC_VER conditional.
31545
31546 2002-02-13  Dick Porter  <dick@ximian.com>
31547
31548         * socket-io.c: 
31549         * icall.c: Internal calls for Blocking, Select, Shutdown,
31550         GetSocketOption and SetSocketOption
31551
31552 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31553
31554         * assembly.cs: better resolver: use it instead of some kludgy
31555         code.
31556
31557 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
31558
31559         * reflection.c: the best way to speed-up the compiler is to avoid
31560         infinite loops.
31561
31562 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
31563
31564         * class.c (mono_class_vtable): changed the object layout
31565         (obj->vtable->class). 
31566         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
31567
31568 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31569
31570         * assembly.c: look for assemblies in the assembly dir, too.
31571
31572 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31573
31574         * class.c: fix thinko in mono_class_from_type().
31575
31576 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
31577
31578         * exception.h, exception.c: added TypeLoadException.
31579         * object.h, object.c: added mono_array_clone ().
31580         * icall.c: handle throwOnError in AssemblyGetType().
31581         Added Array.Clone().
31582         * opcode.h, opcode.c: use a single value for the opcode val.
31583         Compile fix for non-gcc compilers.
31584
31585 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
31586
31587         * opcodes.c, opcodes.h: export interesting info about opcodes.
31588
31589 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
31590
31591         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
31592         icalls. 
31593
31594         * class.c (class_compute_field_layout): set element_class for enums
31595         (mono_class_create_from_typedef): set element_class for normal classes
31596
31597         * icall.c (ves_icall_System_Enum_get_value): impl.
31598
31599         * class.c (mono_class_create_from_typedef): do not set valuetype
31600         flag for System.ValueType and System.Enum
31601
31602 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
31603
31604         * unicode.c (iconv_convert): fix big endian problem.
31605
31606 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
31607
31608         * class.c: add asserts if we are ever going to scribble over memory.
31609         * socket-io.c: not all systems have AF_IRDA defined.
31610
31611 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
31612
31613         * class.c (class_compute_field_layout): do not consider static
31614         fields to compute alignment
31615
31616 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
31617
31618         * appdomain.c (mono_appdomain_get): impl.
31619         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
31620
31621 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
31622
31623         * icall.c: ignore "file://" prefix when loading an assembly.
31624
31625 2002-01-23  Dick Porter  <dick@ximian.com>
31626
31627         * socket-io.c:
31628         * icall.c:
31629         * Makefile.am: Added socket support
31630
31631 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
31632
31633         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
31634         code back.  This should return the assemblies that are loaded by
31635         the runtime on behalf of an application domain. 
31636
31637         The current implementation is still broken, it just returns every
31638         assembly loaded, but until we get real applications domain this
31639         will do.
31640
31641 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
31642
31643         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
31644         AppDomain object.
31645
31646 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
31647
31648         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
31649         the mono_class_from_name lookup.
31650         (ves_icall_get_parameter_info): ditto.
31651         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
31652         method.
31653         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
31654
31655 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
31656
31657         * class.c: load also nested classes on class init.
31658         System.ValueType instance methods gets passed boxed
31659         values, unless methods in derived classed that get a pointer to the
31660         data.
31661         * icall.c: use better name parsing code in GetType().
31662         * image.c, image.h: add mono_image_loaded ().
31663         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
31664         * reflection.c, reflection.h: added mono_reflection_parse_type().
31665
31666 2002-01-22  Veronica De Santis <veron78@interfree.it>
31667
31668         * icall.c : Added mapping of internal calls for Manual and Auto reset events
31669         * threads.c : Added the implementation of internal calls for events
31670         * threads.h : Added prototypes of internal calls for events
31671         
31672 2002-01-21  Radek Doulik  <rodo@ximian.com>
31673
31674         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
31675
31676 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
31677
31678         * class.c (mono_class_init): set min_align to 1 (instead of 0)
31679         (mono_class_value_size): use min_align
31680
31681 2002-01-20  Dick Porter  <dick@ximian.com>
31682
31683         * threads.h:
31684         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
31685         so it compiles on w32.
31686
31687 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
31688
31689         * metadata.c (mono_type_stack_size): impl.
31690
31691         * class.c (mono_class_get_field): impl. memberref token
31692
31693 2002-01-16 Veronica De Santis <veron78@@interfree.it>
31694
31695         * icall.h : Added the internal calls mapping for CreateMutex_internal
31696                     and ReleaseMutex_internal.
31697         * threads.h : Added the prototype of mutexes internal calls.
31698         * threads.c : Added the implementations of mutexes internal calls.
31699
31700 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
31701
31702         * metaparse.h: removed unused file.
31703         * reflection.c, reflection.h: added stream_data_align () function 
31704         to align data in streams and keep stream aligned. Add support for
31705         exception support in method headers.
31706
31707 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
31708
31709         * unicode.c: make iconv_convert () return the number of bytess written
31710         in the output buffer.
31711
31712 2002-01-15  Dick Porter  <dick@ximian.com>
31713         * threads.c: Make the runtime's idea of infinite timeouts coincide
31714         with the class library's
31715
31716         Fix a particularly egregious bug in mono_thread_cleanup(). That
31717         code was so utterly bogus it must have been written on a Monday.
31718
31719 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
31720
31721         * reflection.h: add subtypes field to TypeBuilder.
31722         * reflection.c: encode constants for literal fields.
31723         Handle subtypes. Fix user string token (and add a zero byte)
31724         at the end.
31725         
31726 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
31727
31728         * class.c (mono_class_init): bug fix: assign slot numbers for
31729         abstract methods.
31730
31731 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31732
31733         * reflection.c: don't try to output a code RVA for abstract methods.
31734         Small fixes for method header format. Output parameter info to the
31735         ParamDef table. Save method overriding info to MethodImpl table.
31736         Fix property support. Allow typedef.extends to be a type in the
31737         building assembly.
31738         * verify.c: fix off-by-one error.
31739
31740 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
31741
31742         * class.c: fix mono_class_from_mono_type () for szarray types.
31743         Remove unused cache check in mono_class_from_type_spec().
31744         * icall.c: *type_from_name () functions handle simple arrays and byref.
31745         * reflection.c: handle byref and szarray types. Handle methods without
31746         body (gets P/Invoke compilation working). Handle types and fields in
31747         get_token ().
31748         * reflection.h: add rank to MonoTypeInfo.
31749
31750 2002-01-10  Dick Porter  <dick@ximian.com>
31751
31752         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
31753         internal calls
31754
31755 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
31756
31757         * icall.c: initialize class in type_from_handle ().
31758         Loop also in parent classes for get_method ().
31759         * reflection.c: properly encode class and valuetype types.
31760         Start on encoding TypeBuilder types. Handle fieldrefs.
31761         Use correct length when registering a user string.
31762         Handle ConstructorBuilder and MonoMethod in get_token ().
31763         Make mono_type_get_object () aware of cached types.
31764         * object.c: back out change to mono_string_new ().
31765
31766 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
31767         * object.c: mono_string_new should return a NULL when the string 
31768         passed in is NULL -- not try to deference it.
31769         
31770 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
31771
31772         * icall.c: hack to make IsSubType work for TypeBuilders.
31773         * reflection.c: emit constructors before methods.
31774         Retrieve param names in mono_param_get_objects().
31775
31776 2002/01/05  Nick Drochak  <ndrochak@gol.com>
31777
31778         * Makefile.am: fix list of headers and sources so automake 1.5
31779         doesn't complain. Removed \# at end of list.
31780
31781 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
31782
31783         * reflection.c: get token for a method ref. Set return type of
31784         constructor to void.
31785         * loader.c: debug message.
31786         * class.c: typo fix.
31787
31788 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
31789
31790         * icall.c: fix array init with rank > 1. FindMembers
31791         loops in parent class as well.
31792         * image.c: do not insert nested types in name cache.
31793         * reflection.c: warning fix.
31794         * reflection.h: add override method (for interface impl).
31795
31796 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
31797
31798         * metadata.c: fix customattr decoding.
31799
31800 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
31801
31802         * rawbuffer.cs: Added native Win32 implementation, avoids using
31803         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
31804
31805 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
31806
31807         * class.c: make the low-level routines handle the cache.
31808
31809 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
31810
31811         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
31812
31813 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
31814
31815         * class.c: fix mono_array_element_size() for objects.
31816         * class.h, class.c: add properties to MonoClass and load them
31817         at init time.
31818         * icall.c: check with isinst() when assigning a value to an array
31819         instead of requiring the classes to match exactly.
31820         Implemented icall for System.Type::GetType().
31821         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
31822         enums. Handle bindingflags when looking for methods and fields.
31823         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
31824         and mono_metadata_methods_from_property().
31825         * reflection.h, reflection.c: added structures for propreties,
31826         parameters and enums. Implemented mono_property_get_object() and
31827         mono_param_get_objects().
31828
31829 2001-12-18  Dick Porter  <dick@ximian.com>
31830
31831         * file-io.c: Use mono_string_to_utf16() instead of
31832         mono_string_chars()
31833
31834         * object.c: Added mono_string_to_utf16(), which copies the non
31835         NULL-terminated MonoString into a new double-null-terminated
31836         buffer.
31837
31838 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
31839
31840         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
31841
31842 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
31843
31844         * file-io.c: raise exceptions if handle is invalid.
31845
31846 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
31847
31848         * assembly.c: yet another check for mscorlib.
31849         * class.c, class.h: load nesting info for classes.
31850         * icall.c: many new functions to support the Reflection classes.
31851         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
31852         * reflection.h, reflection.c: mono_image_create_token(),
31853         mono_assembly_get_object(), mono_type_get_object(),
31854         mono_method_get_object(), mono_field_get_object(): methods to return
31855         objects that parallel the C representation of assemblies, types,
31856         methods, fields.
31857
31858 2001-12-11  Dick Porter  <dick@ximian.com>
31859
31860         * icall.c:
31861         * file-io.c: Internal calls for file IO.
31862
31863 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
31864
31865         * tabledefs.h: missing FileAttributes.
31866         * verify.h, verify.c: use is_valid_string () to simplify and check for
31867         valid strings more correctly. Fix warnings and speeling.
31868         Check more tables: Filed, File, ModuleRef, StandAloneSig.
31869         Check code: branches, maxstack, method calls.
31870
31871 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
31872
31873         * object.c (mono_object_allocate): removed static, so that the jit
31874         can allocate value types.
31875
31876         * icall.c (ves_icall_System_DateTime_GetNow): impl.
31877
31878 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31879
31880         * class.c: init enum types right away and register the
31881         token->MonoClass map in mono_class_create_from_typedef ().
31882         * verify.h, verify.c: first cut of the verifier.
31883         * pedump.c: add --verify switch to verify metadata tables.
31884         * tabledefs.h: add some missing enums.
31885
31886 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
31887
31888         * class.c (mono_install_runtime_class_init): impl.
31889         (mono_class_init): renamed mono_class_metadata_init to
31890         mono_class_init, also removed the metadata_inited flag
31891
31892         * object.c (mono_object_isinst): use faster algorithm
31893
31894 2001-11-30  Radek Doulik  <rodo@ximian.com>
31895
31896         * mono-endian.h: reverted last change
31897         added function prototypes
31898
31899         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31900         add mono-endian.c back
31901
31902         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31903         for unaligned access, I've mistaked it with endianess. I am
31904         sorry.
31905         (mono_read16): fix reverted endianess
31906         (mono_read64): ditto
31907         (mono_read32): ditto
31908
31909 2001-11-30  Dick Porter  <dick@ximian.com>
31910
31911         * exception.c: Implement mono_exception_from_name()
31912
31913 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31914
31915         * metadata.h, metadata.c: remove params_size and locals_size and their
31916         calculation from the metadata code: they are only usefult to the
31917         interp.
31918
31919 2001-11-29  Radek Doulik  <rodo@ximian.com>
31920
31921         * object.c (mono_ldstr): swap bytes here, it's probably not the
31922         best place, but works for me now, I'll redo it once I know mono
31923         better, also note that I add PROT_WRITE and don't reset back, also
31924         note that it's only affects big endians, so x86 should be OK
31925
31926         * mono-endian.h (read16): use just glib macros for both endians
31927
31928         * mono-endian.c: removed as glib macros are used in in
31929         mono-endian.h so we don't need to care about endianess for read
31930         macros as glib does that for us already
31931
31932 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31933
31934         * class.h, class.h: take minimum alignment into consideration so
31935         that the fields of a class remain aligned also when in an array.
31936
31937 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31938
31939         * loader.h, loader.c: add mono_method_get_param_names().
31940         * class.c: 0-init class fields.
31941
31942 2001-11-26  Dick Porter  <dick@ximian.com>
31943
31944         * icall.c:
31945         * threads-types.h:
31946         * threads.c: New file that handles System.Threading on all platforms
31947
31948         * object.c: 
31949         * object.h: Remove the synchronisation struct from MonoObject,
31950         replace it with a pointer that gets initialised on demand
31951
31952         * Makefile.am: Replace all the system-specific threading code with
31953         a single file that uses the new wrapper library
31954
31955 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31956
31957         * class.c, class.h: add mono_install_trampoline() so that the runtime
31958         can register a function to create a trampoline: removes the ugly
31959         requirement that a runtime needed to export arch_create_jit_trampoline.
31960         * object.h, object.c: added mono_install_handler() so that the runtime
31961         can install an handler for exceptions generated in C code (with
31962         mono_raise_exception()). Added C struct for System.Delegate.
31963         * pedump.c: removed arch_create_jit_trampoline.
31964         * reflection.c: some cleanups to allow registering user strings and
31965         later getting a token for methodrefs and fieldrefs before the assembly
31966         is built.
31967         * row-indexes.h: updates and fixes from the new ECMA specs.
31968
31969 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31970
31971         * class.h, class.c: add enum_basetype field to MonoClass.
31972         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31973         to get index in the constant table reated to a field, param or
31974         property.
31975         * reflection.h, reflection.c: handle constructors. Set public-key and
31976         version number of the built assembly to 0.
31977         * row-indexes.h: update from new ECMA spec.
31978
31979 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31980
31981         * class.h, class.c: add a max_interface_id to MonoClass.
31982         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31983         since it's used to do that. Added mono_type_type_from_obj().
31984         Make GetType() return NULL instead of segfaulting if the type was not
31985         found. Handle simple arrays in assQualifiedName.
31986         * object.h: add a struct to represent an Exception.
31987         * reflection.c: output call convention in method signature.
31988         Add code to support P/Invoke methods and fixed offsets for fields.
31989
31990 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31991
31992         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31993         the value.
31994         * icall.c: use mono_array_addr instead of array->vector: fixes the
31995         reflection image writing.
31996         * reflection.c: init call convention byte to 0 in method signature.
31997         Encode the property signature. Don't output property-related methods
31998         twice. Really process the properties for a type (don't cast a field to
31999         a property, my mom always told me that).
32000         Fix 64 bit issues in pointer alignment in a different and more
32001         readable way.
32002
32003 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
32004
32005         * loader.h: Removed type class from MonoDefaults, added monotype
32006
32007         * loader.c: Loaded MonoType, removed loading of Type
32008
32009         * icall.c (my_mono_new_object): Now returns a System.MonoType,
32010         and fills in System.Type._impl with a RuntimeTypeHandle rather
32011         than the actual MonoClass *
32012
32013         (ves_icall_type_from_handle): change from type_class to
32014         monotype_class
32015
32016         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
32017         implemented
32018
32019         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
32020         implemented
32021
32022         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
32023
32024         (ves_icall_System_Reflection_Assembly_GetType): implemented
32025
32026         (ves_icall_System_MonoType_assQualifiedName): implemented
32027
32028         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
32029
32030 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
32031
32032         * assembly.c (mono_assembly_open): Implement a cache for the
32033         assemblies. 
32034
32035         (mono_assembly_close): only destroy the assembly when the last
32036         reference is gone.
32037         
32038 2001-11-09  Dick Porter  <dick@ximian.com>
32039
32040         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
32041
32042 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
32043
32044         * class.c (mono_class_metadata_init): bug fix: compute the right slot
32045
32046 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
32047
32048         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
32049         from Martin Weindel.
32050         * object.h: add mono_string_chars ().
32051
32052 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
32053
32054         * reflection.c (build_compressed_metadata): Eliminates warnings
32055         and uses 64-bit clean code.
32056
32057         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
32058         (mono_type_equal): Change signature to eliminate warnings.
32059
32060 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
32061
32062         * icall.c, loader.c: remove the internalcall array constructors.
32063         Changes to match the new MonoArray structure.
32064         * object.h, object.c: an array object doesn't allocate an extra
32065         vector. Add mono_array_new_full () to create jagged arrays easily.
32066
32067 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
32068
32069         * metadata.h, metadata.c: add mono_metadata_field_info () to
32070         retreive all the info about a field from vairous tables.
32071         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
32072         * class.h, class.c: augment MonoClassField with more info.
32073         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
32074         policy and load a field's RVA if needed.
32075
32076 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
32077
32078         * class.c (mono_class_metadata_init): create a trampoline for all
32079         virtual functions instead of actually compiling them.
32080
32081 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
32082
32083         * class.h, class.c: include name in MonoClassField.
32084         * class.c: fix fundamental type of System.Object and System.String.
32085         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
32086         tokens in ldtoken.
32087         * icall.c: remove internalcalls for the Reflection stuff that is now
32088         done in C# code.
32089         * loader.c: mono_field_from_memberref () implementation.
32090         * mono-endian.c: thinko (s/struct/union/g).
32091         * object.c, object.h: make the mono_string_* prototypes actually use
32092         MonoString instead of MonoObject.
32093         * reflection.c, reflection.h: updates for changes in the reflection
32094         code in corlib: we use C structures that map to the actual C# classes.
32095         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
32096         fat method header if needed and use the info from the ILGenerator for
32097         methods. Handle fields in types. Misc fixes.
32098
32099 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
32100
32101         * class.c (mono_class_metadata_init): bug fix: always allocate
32102         space for static class data
32103
32104 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
32105
32106         * class.c (mono_compute_relative_numbering): use relative
32107         numbering to support fast runtime type checks.
32108
32109 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
32110
32111         * class.c (mono_class_create_from_typeref): added debugging output
32112         to print class name when MonoDummy is returned instead of real class
32113
32114 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
32115
32116         * class.c (mono_class_metadata_init): interface offset table now
32117         contains pointers into the vtable - this is more efficient for the jit
32118
32119 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
32120
32121         * class.c (mono_class_metadata_init): use a temporary vtable (the
32122         old algorithm only worked for the interpreter, but not for the jit)
32123
32124 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
32125
32126         * loader.c (method_from_memberref): use mono_class_get to get the
32127         class of an array instead of using System.Array directly.
32128         (mono_get_method): also add MEMBERREF methods to the method cache
32129         which usefull for arrays.
32130
32131 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
32132
32133         * pedump.c (arch_compile_method): added to compute vtable entry
32134
32135         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
32136         number of interfaces.
32137         
32138         * class.h: merged MonoArrayClass into MonoClass
32139
32140         * class.c (mono_class_create_from_typedef): compute the vtable size and
32141         allocate space to include the vtable inside MonoClass
32142         (mono_class_metadata_init): initialize the vtable
32143
32144 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
32145
32146         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
32147         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
32148         * image.c: endian fixes by Laurent Rioux.
32149         * object.h, object.c: rename MonoStringObject to MonoString and
32150         MonoArrayObject to MonoArray. Change some function names to conform to
32151         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
32152         guint16* as first argument, so don't use char*.
32153         Provide macros to do the interesting things on arrays in a portable way.
32154         * threads-pthread.c: updates for the API changes and #include <sched.h>
32155         (required for sched_yield()).
32156         * icall.c: updates for the API changes above.
32157         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
32158         platforms that need them.
32159
32160 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
32161
32162         * class.c: set the correct type for all the fundamental
32163         type when loading the class.
32164
32165 2001-10-05  Dick Porter  <dick@ximian.com>
32166
32167         * threads-pthread.c (pthread_mutex_timedlock): Simple
32168         compatibility version for C libraries that lack this call.
32169
32170 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
32171
32172         * class.c: MonoTypes stored in MonoClass are stored as
32173         fundamental MonoTypes when the class represents a
32174         fundamental type (System.Int32, ...).
32175         The TypeHandle return by ldtoken is a MonoType*.
32176         * icall.c: ves_icall_get_data_chunk () write out all the
32177         PE/COFF stuff. Implement ves_icall_define_method (),
32178         ves_icall_set_method_body (), ves_icall_type_from_handle ().
32179         * image.c: properly skip unknown streams.
32180         * loader.h, loader.c: add type_class to mono_defaults.
32181         * metadata.c, metadata.h: export compute_size () as
32182         mono_metadata_compute_size () with a better interface.
32183         Typo and C&P fixes.
32184         * pedump.c: don't try to print the entry point RVA if there is no entry point.
32185         * reflection.c, reflection.h: many cleanups, fixes, output method
32186         signatures and headers, typedef and typeref info, compress the metadata
32187         tables, output all the heap streams, cli header etc.
32188         * row-indexes.h: typo fixes.
32189
32190 2001-10-04  Dick Porter  <dick@ximian.com>
32191
32192         * object.h: Add a synchronisation mutex struct to MonoObject
32193
32194         * object.c (mono_new_object): Initialise the object
32195         synchronisation mutexes
32196
32197         * icall.c: System.Threading.Monitor internal calls
32198         
32199         * threads-pthread.h:
32200         * threads-pthread.c: System.Threading.Monitor internal calls
32201
32202         * threads-types.h: New file, includes the system-specific thread
32203         structures
32204         
32205         * threads-pthread-types.h:
32206         * threads-pthread-types.c: New files, handle pthread-specific
32207         synchronisation types
32208
32209         * threads-dummy-types.h: 
32210         * threads-dummy-types.c: New files of dummy support for
32211         thread-specific types
32212
32213         * metadata.c:
32214         * image.c:
32215         * pedump.c: include mono-endian.h not endian.h
32216         
32217         * Makefile.am: More threads files.
32218         Name mono-endian.h not endian.h
32219
32220 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
32221
32222         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
32223         stuff and implement a few more bits.
32224         * icall.c: a field needs to be dereferenced twice. Do not use the same
32225         name for two variables in the same scope.
32226         * image.c, image.h: cleanups.
32227
32228 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
32229
32230         * class.c (mono_class_metadata_init): bug fix: compute the right size
32231
32232 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
32233
32234         * icall.c: implemented some of the Reflection internalcalls.
32235         * image.c, image.h: start writing out the PE/COFF image.
32236         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
32237         that does the reverse than decode_blob_size ().
32238         * object.c: use mono_metadata_encode_value (). Move here
32239         temporary implementation of mono_string_to_utf8 ().
32240         * rawbuffer.c: make malloc_map static.
32241
32242 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
32243
32244         * metadata.c: fix type comparison for arrays.
32245         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
32246         Added a couple of new classes to monodefaults.
32247         * icall.c: added a couple of Reflection-related internalcalls.
32248         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
32249         Added a byval_arg MonoType to MonoClass.
32250
32251 2001-09-28  Dick Porter  <dick@ximian.com>
32252
32253         * icall.c:
32254         * threads-pthread.h: 
32255         * threads-pthread.c: Implemented internal calls for
32256         LocalDataStoreSlot operations.  Applied mutexes around all shared
32257         data.  Reworked the thread creation and Start() operations to
32258         avoid a race condition.
32259         
32260         * threads-dummy.h:
32261         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
32262
32263 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
32264
32265         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
32266
32267 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
32268
32269         * class.c, loader.c: warn and return NULL instead of erroring out.
32270         * icall.c: added System.AppDomain::getCurDomain().
32271         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
32272
32273 2001-09-25  Dick Porter  <dick@ximian.com>
32274
32275         * threads-pthread.h:
32276         * threads-pthread.c: Implemented timed thread joining and added
32277         System.Threading.Thread::Join_internal internal call
32278
32279         * icall.c: Added System.Threading.Thread::Join_internal internal call
32280
32281         * threads-dummy.h:
32282         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
32283
32284 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
32285
32286         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
32287         mono_string_intern () to implement the semantics of the ldstr opcode
32288         and the interning of System.Strings.
32289         * icall.c: provide hooks to make String::IsIntern and String::Intern
32290         internalcalls.
32291
32292 2001-09-23  Dick Porter  <dick@ximian.com>
32293
32294         * threads-dummy.c: 
32295         * threads-dummy.h: New files of dummy threading routines
32296
32297         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
32298         support code based on system specifics
32299
32300         Rename PTHREAD_LIBS to THREAD_LIBS
32301         
32302 2001-09-23  Dick Porter  <dick@ximian.com>
32303
32304         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
32305         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
32306         internal calls.
32307         (mono_thread_init): Set up a Thread object instance to return when
32308         the main thread calls Thread.CurrentThread
32309         (mono_thread_cleanup): Wait for all subthreads to exit
32310
32311         * icall.c: New internal calls for System.Threading.Thread::Sleep
32312         (including Schedule) and CurrentThread
32313
32314         * threads.h: New file, to insulate thread-specific stuff from the
32315         rest of the code
32316
32317 2001-09-21  Dick Porter  <dick@ximian.com>
32318
32319         * threads-pthread.h: 
32320         * threads-pthread.c: New file, for handling pthreads-style
32321         threading support.  Start() now starts a new thread and executes
32322         the ThreadStart delegate instance.
32323
32324         * icall.c: Added the internalcall for
32325         System.Threading.Thread::Start_internal
32326
32327         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
32328
32329 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
32330
32331         * loader.c: work around the different signatures for delegates
32332         constructors csc generates in compiled code vs the ones compiled in mscorlib.
32333
32334 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
32335
32336         * class.h, class.c: add mono_class_get_field_from_name ().
32337         * *: Fix C comments and other ANSI C issues.
32338
32339 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
32340
32341         * endian.h, assembly.c: fix some endianness issues.
32342
32343 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
32344
32345         * loader.h, load.c: add delegate_class to mono_defaults.
32346         Handle runtime provided methods in mono_get_method ().
32347
32348 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
32349
32350         * loader.c (mono_get_method): use pinvoke for internal call
32351
32352         * icall.c: use pinvoke for internal call
32353
32354         * loader.c (method_from_memberref): set the method name
32355
32356 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
32357
32358         * metadata.c: help the compiler generate better code for
32359         mono_class_from_mono_type ().
32360
32361 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
32362
32363         * class.c (mono_class_metadata_init): delayed computing of the
32364         class size to mono_class_metadata_init ()
32365
32366 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
32367
32368         * class.c, class.h: add an interfaces member to MonoClass.
32369         * image.c, image.h: add assembly_name field to MonoImage
32370         from the assembly table.
32371         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
32372
32373 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
32374
32375         * class.c: Handle Array in mono_class_from_mono_type ().
32376         * metadata.c, pedump.c: some endian fixes.
32377
32378 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
32379
32380         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
32381         * metadata.c: fix small problem introduced with the latest commit.
32382
32383 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
32384
32385         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
32386         We don't need a MonoMetadata pointer anymore to compare signatures in
32387         mono_metadata_signature_equal (), update callers.
32388         Reduced memory usage an number of allocations for MonoMethodHeader and
32389         MonoMethodSignature.
32390
32391 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
32392
32393         * metadata.c: added compare for szarray.
32394
32395 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
32396
32397         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
32398         and add a couple more types to it and mono_defaults. Give an hint on
32399         classes that need implementing in our corlib and are referenced
32400         in mscorlib.
32401
32402 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
32403
32404         * class.h, class.c: keep track if a class is also an Enum.
32405         * loader.c: Implement a couple more types for use in libffi
32406         marshalling. Gives better diagnostics when failing to dlopen
32407         a library. Set method->klass for P/Invoke methods, too.
32408
32409 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
32410
32411         * class.c, class.h: add a MonoType this_arg to MonoClass that
32412         represents a pointer to an object of the class' type that
32413         can be used by the interpreter and later the type cache.
32414         Add best guess alignment info for valuetype objects.
32415
32416 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
32417
32418         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
32419         into MonoType: one less level of indirection and allocation and
32420         simplifies quite a bit of code. Added cache for MonoTypes that are
32421         used frequently, so that we don't need to allocate them all the time.
32422
32423 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
32424
32425         * class.c (mono_class_create_from_typedef): System.Enum is also a
32426         value type, although it does not derive from System.ValueType
32427         (maybe a bug in the ms compiler?)
32428
32429         * metadata.c (mono_type_size): return the right size for value types
32430
32431         * loader.c (mono_get_method): only initialize method header if not abstract
32432
32433         * class.c (mono_class_from_mono_type): use mono_default values. 
32434
32435 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
32436
32437         * *: use MonoClass pointers instead of <type_tokens>
32438         
32439         * class.h: new flag: metadata_inited.
32440
32441         * class.c (mono_class_metadata_init): impl.
32442         (mono_class_instance_size): impl.
32443         (mono_class_data_size): impl.
32444
32445 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
32446
32447         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
32448         MonoClass now has the name and name_space fields. 
32449         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
32450         mono_get_method () takes and optional MonoClass as argument.
32451         Removed mono_typedef_from_name() and added mono_class_token_from_name()
32452         instead that takes advantage of a map from class names to typedef
32453         tokens in MonoImage.
32454
32455 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
32456
32457         * metadata.c: zero is not a valid alignment boundary.
32458         Merge MONO_TYPE_VOID in default decoding code.
32459
32460 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
32461
32462         * image.h: merged MonoMetadata into MonoImage
32463
32464         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
32465         identify the type of elements.
32466
32467 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
32468
32469         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
32470         * cil-coff.h: split MonoMSDOSHeader and add size info.
32471         * image.c: add some consistency checks.
32472         * metadata.c: fix row size computation: one programmer
32473         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
32474         add explanation for the locator routine.
32475         Fix decoding of size in method header.
32476         
32477 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
32478
32479         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
32480         (g_concat_dir_and_file): Bring g_concat_dir_and_file
32481         function from gnome-libs.  This uses the right path separator
32482         based on the OS, and also works around a bug in some systems where
32483         a double slash is not allowed. 
32484         (default_assembly_name_resolver): Use g_concat_dir_and_file
32485         (mono_assembly_open): ditto.
32486
32487 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
32488
32489         * metadata.c (mono_metadata_signature_equal): impl.
32490
32491         * *: void is now a realy MonoType (instead of using NULL)
32492         
32493         * metadata.c (do_mono_metadata_parse_type): use
32494         mono_metadata_parse_type to parse void value.
32495
32496 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
32497
32498         * metadata.c, metadata.h: in the signature and method header store
32499         only the space required for holding the loca vars and incoming arguments.
32500
32501 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
32502
32503         * metadata.c (do_mono_metadata_parse_type): treat void like any
32504         other type (instead of assigning NULL);
32505
32506 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
32507
32508         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
32509
32510 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
32511
32512         * image.c (do_mono_image_open): added a cache for arrays.
32513
32514 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
32515
32516         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
32517         decode a single column from a row in a metadata table and changes
32518         to take advantage of it in the typedef locator (gives a nice speed up).
32519         Store offset info for function params.
32520
32521 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
32522
32523         * image.h (MONO_IMAGE_IS_CORLIB): removed 
32524
32525 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
32526
32527         * assembly.c: how could mono_assembly_close () had ever worked?
32528         * metadata.c, metadata.h: provide offset info for local vars.
32529         Implement mono_type_size () to take care of alignment as well
32530         as size (it was mono_field_type_size in cli/class.c before).
32531
32532 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
32533
32534         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
32535
32536         * assembly.h (CORLIB_NAME): set to corlib.dll
32537
32538         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
32539
32540 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
32541
32542         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
32543         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
32544         tokentype.h: massive namespace cleanup.
32545
32546 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
32547
32548         * metadata.h, metadata.c: decode exception clauses when parsing method header.
32549
32550 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
32551
32552         * metadata.c (mono_metadata_free_type): added check for type !=
32553         NULL (void) before calling mono_metadata_free_type()
32554
32555 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
32556
32557         * metadata.h, row_indexes.h: added header with enumerations to use
32558         to index in the columns from tables in metadata and to decode coded
32559         tokens: we should start using this instead of embedding magic numbers
32560         all over the code.
32561
32562 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
32563
32564         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
32565         Move metadata_t info from cli_image_info_t to MonoImage, where
32566         it's easily accessible. Changed all the uses accordingly.
32567         Added the method and class caches to MonoImage.
32568         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
32569         and mono_metadata_decode_value () signature to be more consistent
32570         with the other parse functions (and simplify code). Taken advantage
32571         of zero-length array allocation with GCC. Removed reduntant (and
32572         wrong) MonoFieldType struct and use MonoParam instead. Changed
32573         mono_metadata_parse_field_type () to use common code for parsing.
32574         Added mono_metadata_typedef_from_field () and
32575         mono_metadata_typedef_from_method () to lookup a typedef index from a
32576         field or method token.
32577         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
32578
32579 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
32580
32581         * metadata.c (mono_metadata_parse_field_type): Implement. 
32582         (do_mono_metadata_parse_type): Split engine from
32583         mono_metadata_parse_type, so that we can create smaller structures
32584         for things that just have one pointer to the MonoType (look at
32585         the MonoFieldType)
32586
32587 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
32588
32589         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
32590         as Jan Gray found out, it is incorrect. 
32591
32592 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
32593
32594         * assembly.c: Implement asssembly loading.  This loads an image
32595         and loads all the referenced assemblies.  Come to think of it, we
32596         could always do lazy loading of the assemblies. 
32597
32598         * image.c (mono_image_open): Keep loaded images in a hashtable.
32599
32600         * image.h (MonoImage): Add reference count.
32601
32602 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
32603
32604         * assembly.c (mono_assembly_open): Keep track of the file name in
32605         case the assembly has no ASSEMBLY table.
32606
32607         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
32608         from get.c here.
32609
32610 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
32611
32612         * metadata.c, metadata.h: decode local vars in method header
32613         parse function. Change callers accordingly.
32614
32615 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
32616
32617         * metadata.h, cil-coff.h: protect against multiple inclusion.
32618         Added some new structures to hold information decoded from metadata:
32619         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
32620         and relevant decoding/free functions.
32621         * metadata.c: implement decoding functions. Add warning for out of bounds
32622         index in mono_metadata_locate(). Implement mono_get_method () to retreive
32623         all the info about a method signature and invocation. Remove check on
32624         uninitialized local var in parse_mh() and fix memory leak.
32625
32626 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
32627
32628         * metadata.h: More macros.
32629
32630         * tokentype.h: New file.
32631
32632 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
32633
32634         * assembly.c: added a consistency check and initialize
32635         some structures with g_new0().
32636         * metadata.c: fixed a couple more bugs in table size computation
32637         and add other checks for out-of bound access to metadata.
32638
32639 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
32640
32641         * metatada.c: fix bugs computing table sizes. Spew a
32642         warning when index in string heap is out of bounds.
32643
32644 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
32645
32646         * metadata.h: Add a couple of macros to manipulate tokens. 
32647
32648 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
32649
32650         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
32651         cli_section_tables).
32652
32653 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
32654
32655         * metadata.c (mono_metadata_user_string): New function, provides
32656         access to the UserString heap. 
32657
32658 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
32659
32660         * metadata.c: Add inline documentation.
32661
32662 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
32663
32664         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
32665         files. 
32666
32667 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
32668
32669         * typeattr.h: New file, TypeAttribute flags. 
32670
32671 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
32672
32673         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
32674         mono_assembly_ensure_section): Section loading code.
32675         (load_section_tables): Load the sections.
32676
32677         * mono/metadata/metadata.c (mono_metadata_locate_token,
32678         mono_metadata_locate): Functions to locate the information
32679         definition given a token or a table and an index.
32680         (mono_metadata_compute_table_bases): New.
32681         (compute_size): New function to compute the sizes of the various
32682         tables.
32683
32684         * mono/metadata/metadata.h: Finish listing the different index
32685         types. 
32686
32687         * mono/metadata/pedump.c: Improve to dump new information.
32688
32689 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
32690
32691         * mono/metadata/metadata.c: Entered all the tables matching
32692         Beta2. 
32693
32694         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
32695
32696
32697
32698