2009-01-20 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2
3         * object-internals.h (struct _MonoException): Added a comment
4         explaining the new use of trace_ips.
5
6 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7
8         * generic-sharing.c (inflate_other_data): Inflate array methods
9         correctly.
10
11         * loader.c, class-internals.h: Rename search_in_array_class() to
12         mono_method_search_in_array_class() and make it non-static.
13
14 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
15
16         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
17         Hopefully fixes #458168.
18
19 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
20
21         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
22         as it is performed elsewhere.
23
24         Code is contributed under MIT/X11 license
25
26 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
27
28         * mono-perfcounters-def.h: Add counters for asp.net requests total and
29         requests queued.
30         * object.c (mono_raise_exception): Increment the exceptions total
31         counter when an exception is thrown.
32         * class-internals.h: Add a location for storing the total number of
33         asp.net requests served.
34         * mono-perfcounters.c: Implement update support for asp.net counters
35         from the class libraries. Implement read support for asp.net counters
36         and exceptions total counter.
37
38 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
39
40         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
41         accessing klass->methods. Fixes #467385.
42
43 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
44
45         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
46         for byval arguments without an [Out] attribute. Fixes #467212.
47
48         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
49         Fix compilation under android.
50         
51         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
52         processed, scan them directly after they are copied, to achieve better locality
53         and cache usage.
54
55         * socket-io.c: Applied patch from Koushik Dutta
56         (koush@koushikdutta.com). Disable IPV6 when running under android.
57
58 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
59
60         * icall.c (ves_icall_InternalExecute): Add write barriers.
61
62         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
63         the GC code.
64
65         * sgen-gc.c: Implement write barriers in IL code.
66
67 2009-01-17  Geoff Norton  <gnorton@novell.com>
68
69         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
70
71 2009-01-17  Geoff Norton  <gnorton@novell.com>
72
73         * image.c: When unloading the image->references table, there can be gaps
74         in it.  Ensure that we iterate every entry to avoid leaking assembly references
75         when unloading an appdomain.
76
77 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
78
79         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
80         speed up ptr-in-nursery checks.
81
82         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
83         threads_lock () to prevent deadlocks.
84
85         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
86         does not need to be scanned during minor collections, since writes to it
87         must use write barriers.
88
89 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
90
91         * metadata-verify.c: Add pe nt header verification.
92         
93 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
94
95         * gc.c: Fix a few warnings when using SGEN.
96
97 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
98
99         * metadata-verify.c: Add pe optional header verification.
100
101 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
102
103         * sgen-gc.c: Add support for user defined marker functions, used by
104         MonoGHashTable to avoid registering a GC root for every hash node.
105
106 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
107
108         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
109         non-pinned roots into separate hashes to avoid having to traverse them
110         in functions which are only interested in one kind.
111
112 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
113
114         * metadata-verify.c: Add pe header machine field verification.
115         
116 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
117
118         * metadata-verify.c: Add pe header size verification.
119
120 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
121
122         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
123         using the GC, they don't contain references.
124
125         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
126
127 2009-01-13  Geoff Norton  <gnorton@novell.com>
128
129         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
130         AppDomains created on the native side can be cleaned up on the native side.
131
132 2009-01-13  Geoff Norton  <gnorton@novell.com>
133
134         * appdomain.c: Ensure that we call mono_context_init for the embedding api
135         as well as the managed api.
136
137 2009-01-13  Geoff Norton  <gnorton@novell.com>
138
139         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
140         with a MonoAppDomain initialized against it.
141
142 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
143
144         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
145         
146         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
147
148         * marshal.c: Avoid setting the exception clauses after a method has been entered 
149         into the wrapper caches. Fixes #465700.
150
151         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
152         method builder.
153         (mono_mb_create_method): Set the clauses from the method builder.
154
155 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
156
157         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
158         Patch from Makoto Kishimoto.
159
160 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
161
162         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
163         encoding them as ROOT_DESC_COMPLEX.
164         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
165
166 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
167
168         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
169         no longer point to the nursery.
170
171         * sgen-gc.c: Add a few comments/FIXMEs.
172         
173         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
174
175         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
176         initialization of the various _method variables thread safe. Fixes
177         #465377.
178
179 2009-01-12  Mark Probst  <mark.probst@gmail.com>
180
181         * domain.c, domain-internals.h: Remove the shared_generics_hash
182         and its lookup functions.
183
184 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
185
186         * socket-io.c:  Fixing the MSVC build. 
187
188         Code is contributed under MIT/X11 license.
189
190 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
191
192         * metadata-verify.c: Add pe header watermark verification.
193
194 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * metadata-verify.c: Add lfanew verification.
197
198 2009-01-12  Jb Evain  <jbevain@novell.com>
199
200         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
201         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
202
203 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
204
205         * socket-io.c: Fix the build.
206
207         * environment.c: Fix an #ifdef.
208
209 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
210
211         * threadpool.c (async_invoke_thread): Handle the wait function returning
212         WAIT_IO_COMPLETION as well.
213         (async_invoke_io_thread): Ditto.
214
215 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
216
217         * threads.c: Fixing the Windows build.
218
219         Code is contributed under MIT/X11 license.
220
221 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
222  
223         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
224         interrupt a wait.
225         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
226         the thread to wait again.
227
228 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
229
230         * metadata-verify.c: Initial skeleton of the metadata verifier.
231
232         * pedump.c: Add support for the metadata verifier.
233
234         * verify-internal.h: Export the whole assembly metadata verifier function.
235
236 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
237
238         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
239
240 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
241
242         * Makefile.am: Upgrade dtrace-prelink.sh location.
243
244 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
245
246         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
247         well. Otherwise the shutdown deadlock that happens on unix will can happen
248         as well.
249         If the main thread code finishes too fast it's possible that the finalizer
250         thread won't have executed yet, won't record itself as the finalizer thread
251         and the shutdown sequence will wait on it forever.
252
253 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
254
255         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
256         with MSVC.
257
258 2009-01-08  Miguel de Icaza  <miguel@novell.com>
259
260         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
261         Robert Jordan for pointing this out.
262
263 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
264
265         * icall.c
266         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
267         ves_icall_System_IO_DriveInfo_GetDriveType.
268
269 2009-01-07  Miguel de Icaza  <miguel@novell.com>
270
271         * icall.c: Wrap calls to mono_strtod in CriticalSection
272         invocations when using eglib, to work around #464316.
273
274 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
275
276         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
277         return value of GetCurrentDirectory to never access unitialized memory.
278
279 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
280
281         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
282         return value of GetCurrentDirectory and expand the buffer if needed.
283
284         Fixes #459094.
285
286 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
287
288         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
289           Adding a call to mono_init_com_types.
290
291         Code is contributed under MIT/X11 license.
292
293 2009-01-07  Geoff Norton  <gnorton@novell.com>
294
295         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
296         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
297         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
298         be the value of the ip buffer.
299
300 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
301
302         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
303         interfaces_packed here.
304
305         Fixes part of #463294.
306
307 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
308
309         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
310
311         Fixes part of #463294.
312
313 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
314
315         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
316         is a boxed complex as well.
317
318         Fixes part of #463294.
319
320 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
321
322         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
323         control if a methodspec should be created for the generic method definition from external assemblies.
324         Caching of methodspec is done using the handleref hash table.
325
326         Fixes #462592.
327
328 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
329
330         * loader.c (find_method): When searching the interfaces of a class
331         check the transitive closure of implemented interfaces.
332
333         Fixes #463303.
334
335 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
336
337         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
338         
339 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
340
341         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
342         interfaces calculation to fill_valuetype_array_derived_types.
343
344         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
345         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
346         for example.
347
348         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
349         interfaces for valuetypes if needed.    
350
351         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
352         for their basetype as well. Types are array expanded if rank is > 0.
353
354         Fixes #400716.
355
356 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
357
358         * socket-io.h : Changing the signature of
359           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
360           the blocking state.
361
362         * icall-def.h :  Changing the signature of
363           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
364
365         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
366           For Windows only.  Avoid blocking when calling accept by
367           querying for a connection via select.  The loop also queries
368           the thread state every 1000 micro seconds for the thread
369           stop state.  This will avoid the process hanging on shutdown
370           when using a TcpChannel that is never connected to.
371
372         Code is contributed under MIT/X11 license.
373
374 2008-12-30  Marek Safar  <marek.safar@gmail.com>
375
376         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
377
378 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
379
380         * class.c (get_implicit_generic_array_interfaces): Extract common
381         code to a helper function making it a lot easier on the eyes.
382
383 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
384
385         * class.c (get_implicit_generic_array_interfaces): If the internal
386         enumerator is an interface inflate System.Object instead of itself.
387
388         Fixes #461261.
389
390 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
391
392         * object.c (mono_runtime_invoke_array): Don't assert with
393         byref nullable types.
394
395         * marshal.c (mono_marshal_get_runtime_invoke): To handle
396         byref nullables we unbox the object and store it on the
397         stack. 
398         We can't use the boxed object since it is the T of Nullable<T>
399         and the boxed representation of a nullable it's underlying type
400         or null.
401         We could cheat and create a boxed nullable and use the same
402         machinery of other byref VTs but this feels like a hack and
403         using the stack has the bonus of reducing heap pressure.
404
405         Fixes #461941.
406
407 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
410         return value.
411
412         Fixes #461867.
413
414 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
415
416         * icall-def.h : Adding an internal call definition for 
417           System.Environment.internalBroadcastSettingChange.
418
419         * icall.c : Adding a Windows only implementation to broadcast a 
420           WM_SETTINGCHANGE when an environment variable has changed.
421
422         Code is contributed under MIT/X11 license.
423
424 2008-12-19  Mark Probst  <mark.probst@gmail.com>
425
426         * class.c, class-internals.h: Made
427         mono_class_has_parent_and_ignore_generics() non-static.
428
429 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
430
431         * image.c: deal with the mmap failing when loading an image.
432
433 2008-12-17  Geoff Norton  <gnorton@novell.com>
434
435         * threadpool.c: Ensure that the io_queue_lock is initialized
436         in all circumstances, as we always attempt to cleanup against it.
437
438 2008-12-17  Miguel de Icaza  <miguel@novell.com>
439
440         * icall.c (ves_icall_System_Environment_get_Platform): For
441         compatibility reasons for existing client code we will keep
442         returning 4 for a while.   
443
444         For how long will depend on the documentation being updated, and
445         for us to give client code a chance to be updated.
446
447         This reverts the original decison on #433108 since we did not
448         catch roughly 33 instances of the broken code in our own source
449         code base, we did not catch failures on the buildbots, and QA did
450         not bring this as a problem.
451
452         Only today I found some customer's code breaking due to our own
453         class libraries not being fully updated and tracked it down to
454         this change.  I am reverting it because if we could not even get
455         our story straight in our own code base, how can we hope that our
456         end user code be fixed?
457
458         As of this morning, our Wiki page that documents how to detect
459         Unix had not been fixed.    
460
461 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
462
463         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
464
465         * class.c (mono_class_get_fields): Handle loading errors.
466
467 2008-12-12 Mark Mason <mmason@upwardaccess.com>
468
469         * 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.
470         
471 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
472
473         * mono-perfcounters.c: avoid warning.
474
475 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
476
477         * reflection.c (ensure_runtime_vtable): Work on generic instances and
478         make sure all interfaces have MonoClass::interface_id set.
479
480         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
481         method table is property set.
482
483 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
484
485         * class.c: New function mono_class_setup_interface_id that setup
486         MonoClass::interface_id if needed.
487
488         * class-internals.h: Export new function.
489
490 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
491
492         * class.c: Add code to sanity check the vtable after setup_vtable_general
493         has done it's work.
494
495 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
496
497         * icall.c: make Assembly.GetExecutingAssembly work properly when
498         reflection is used to invoke the method.
499         Bug #321781 fixed.
500
501 2008-12-11  Mark Probst  <mark.probst@gmail.com>
502
503         * metadata/generic-sharing.c: Look for constraints in all type
504         arguments, not just the first one.
505
506 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
507
508         * appdomain.c: return the correct CodeBase for an Assembly instance
509         that was loaded from the shadow-copy directories.
510         Bug #458190 fixed.
511
512 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
513
514         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
515
516         * sgen-gc.c (check_object): New debugging helper function.
517
518         * object.c: Fix calls to mono_value_copy_array ().
519
520 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
521
522         * class.c (mono_class_setup_fields): If working on an inflated class
523         first check if the generic definition did init with success.
524
525         Fixes #445361.
526
527 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
528
529         pedump.c (main): Fix a warning.
530
531 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
532
533         * object-internals.h : Adding a definition for 
534           MonoReflectionComVisibleAttribute.
535
536         * marshal.c (cominterop_com_visible) :  Method added to check the 
537           ComVisible attribute of a class.
538
539         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
540           cominterop_raise_hr_exception added to consolidate common code 
541           to raise hr exceptions.
542
543         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
544           if a managed class should support IDispatch.
545
546         * marshal.c 
547           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
548           Added additional checks for managed object when getting 
549           an IDispatch interface.
550
551         Code is contributed under MIT/X11 license.
552
553 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
554
555         pedump.c (main): Handle mono_get_method () returning NULL. 
556
557 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
558
559         * marshal.h: Fix a warning.
560
561 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
562
563         * marshal.c : Adding cominterop_release_all_rcws to release all
564           runtime callable wrappers held by the runtime.
565
566         * marshal.h : Adding declaration for cominterop_release_all_rcws.
567           
568         Code is contributed under MIT/X11 license.
569
570 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
571
572         * metadata.c (mono_image_alloc_lock): New helper function.
573         (mono_image_alloc0_lock): Ditto.
574
575         * metadata.c: Use the alloc_lock () helper functions for allocating
576         memory from the image mempool.
577
578 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * class.c (mono_class_from_generic_parameter): Document it's
581         locking behavior. Fix double checked locking here, we stored in
582         param->pklass a partially initialized MonoClass and no membar was used.
583
584 2008-12-05  Marek Habersack  <mhabersack@novell.com>
585
586         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
587         (3) functions are present in the C library use them to do the
588         job. If they are absent, make sure that the sum of int_part and
589         dec_part is rounded before returning. This is necessary due to the
590         division of dec_part by the power of 10 before the final addition
591         is performed - if the result is not rounded in some cases it will
592         yield invalid results.
593
594 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
595
596         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
597         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
598         instruction instead of a pointer constant.
599
600 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
601
602         * loader.c (mono_method_get_header): Do most of the work outside the
603         loader lock, to avoid assembly load hook deadlocks.
604
605         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
606         (mono_metadata_parse_type_full): Ditto.
607
608 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
609
610         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
611         Make the stack depth fixed. Ensure proper argument passing to the backtrace
612         funtions. Finally, use a lock to produce well ordered output.
613
614         The lock looks silly, as all calls to the corlib mempool should be guarded
615         with the loader lock, but for some reason this fact doesn't help. 
616
617         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
618
619 2008-12-02  Mark Probst  <mark.probst@gmail.com>
620
621         * socket-io.c: 64 bit big-endian fixes.
622
623 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
624
625         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
626         targets that require strict compatibility between the types.
627
628         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
629         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
630         Kill the strict argument and create a new one valuetype_must_be_boxed.
631
632         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
633         state that all valuetypes must be boxed.
634
635         Fixes #448560.
636
637 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
638
639         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
640         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
641
642         Contributed under MIT/X11 license.
643
644 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
645
646         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
647         the inflate_generic_type machinery should handle it.
648
649         This avoids a crash when the field's flags is zero and it's type is
650         a primitive.
651         What happens is that mono_metadata_parse_type_full will see that opt_attrs
652         is zero and will return one of the cached built-in primitive types. Since
653         those types live in read-only memory, the code that copies it crashes.  
654
655 2008-11-28  Mark Probst  <mark.probst@gmail.com>
656
657         * object.c: Don't put function descriptors into generalized IMT
658         thunks.
659
660 2008-11-28  Mark Probst  <mark.probst@gmail.com>
661
662         * class.c: Enable generic code sharing on PPC64.
663
664 2008-11-27  Mark Probst  <mark.probst@gmail.com>
665
666         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
667         from mini/mini.c.
668
669         * generic-sharing.c: Allocate the method template slists from the
670         image mempool so it doesn't leak.
671
672 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
673
674         * class.c (generic_array_methods): Release the linked list.
675
676 2008-11-27  Mark Probst  <mark.probst@gmail.com>
677
678         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
679         invocation to g_utf16_to_utf8().
680
681 2008-11-26  Mark Probst  <mark.probst@gmail.com>
682
683         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
684         arguments on big endian archs.
685
686 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
687
688         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
689         the type name (test added in corlib).
690
691 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
692
693         * pedump.c: initialize perf. counters. Fixes a segv.
694
695 2008-11-25  Martin Baulig  <martin@ximian.com>
696
697         * mono-debug-debugger.c
698         (mono_debugger_runtime_invoke): Return the exception object if an
699         exception was thrown.  Visual Studio displays the exception object
700         in the locals window.
701
702 2008-11-24  Mark Probst  <mark.probst@gmail.com>
703
704         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
705         ftnptr.
706
707 2008-11-24  Mark Probst  <mark.probst@gmail.com>
708
709         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
710         MONO_TYPE_U are sizeof (gpointer), too.
711
712 2008-11-24  Mark Probst  <mark.probst@gmail.com>
713
714         * marshal.c (mono_type_native_stack_size): Fixed size and
715         alignment for reference types.
716
717 2008-11-23  Mark Probst  <mark.probst@gmail.com>
718
719         * class.c (mono_class_generic_sharing_enabled): Disable generic
720         code sharing for PPC64.
721
722 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
723
724         * icall.c (mono_method_get_equivalent_method): Make sure
725         method->klass->methods is inited before looping over it.
726
727 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
728
729         * object.c: when calling ExecuteAssembly in a newly created domain,
730         the configuration file and application base are already set up.
731         Bug #446353 take 2 fixed.
732
733 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
734
735         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
736         Fixes #444715. Fix a warning.
737
738 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
739
740         * appdomain.c: write the full path of the assembly to the .ini file
741         created when "shadow-copying"
742         Bug #446353 fixed.
743
744 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
745
746         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
747         if signature==FALSE.
748
749 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
750
751         * marshal.h : Fix the cygwin build.
752            marshal.c:12442: undefined reference to `_IID_IMarshal'
753           
754         Code is contributed under MIT/X11 license.
755
756 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
757
758         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
759           free threaded marshaler when QueryInterface is called on a COM callable
760           wrapper requesting the IMarshal interface.
761           
762         Code is contributed under MIT/X11 license.
763
764 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
765
766         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
767
768         * reflection.c (mono_type_get_object): Special case the very common
769         void type.
770
771         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
772         hold typeof(void).
773
774 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
775
776         * process.h : Adding method declaration for
777           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
778           
779         * process.c : Adding implementation for
780           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
781           
782         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
783           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
784
785         Code is contributed under MIT/X11 license.
786
787 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
788
789         * appdomain.c (unload_thread_main): Clean up threadpool by
790         calling mono_thread_pool_remove_domain_jobs.
791
792         * domain-internals.h (struct _MonoDomain): Add new fields to
793         help coordinate the cleanup of the threadpool.
794
795         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
796         that cleans up the threadpool of all jobs associated with an appdomain.
797         It does that by cleaning up the queues and making sure all active
798         threads are accounted.
799
800         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
801         unloaded or in the process of. Take this is such way that there is
802         no race condition between another thread starting the unload and the
803         current thread acknowledging it.
804
805         * threadpool.c (async_invoke_thread): Same.
806
807         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
808         firing the new thread.
809
810         * threadpool.c (start_tpthread): Same.
811
812         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
813
814         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
815
816 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
817
818         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
819         Add support for DuplicateHandle.
820         
821         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
822         Add support for DuplicateHandle.
823         
824         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
825         Add support for DuplicateHandle.
826
827         Code is contributed under MIT/X11 license.
828
829 2008-11-06  Mark Probst  <mark.probst@gmail.com>
830
831         * class-internals.h: Make min_align into a whole byte.
832
833         * class.c: Set min_align for SIMD types to 16.
834
835 2008-11-05  Geoff Norton  <gnorton@novell.com>
836
837         * attach.c: Default the attacher to enabled for all cases including
838         embedded.
839
840 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
841
842         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
843         change r117650.
844
845 2008-11-04  Mark Probst  <mark.probst@gmail.com>
846
847         * monitor.c, monitor.h: New function for querying offsets of
848         members of MonoThreadsSync.
849
850 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
851
852         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
853         to speed up this function and to avoid the boundless memory growth caused by
854         the signature_dup () calls.
855
856 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
857
858         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
859         wrapper.
860
861         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
862         by 1 bit.
863
864         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
865
866 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
867
868         * appdomain.c:
869         * domain-internals.h: made mono_set_private_bin_path_from_config()
870         "internal".
871         * object.c: call the above function after setting the configuration
872         file path for the root domain.
873         Fixes bug #314478.
874
875 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
876
877         * assembly.c: when the assembly is loaded from an absolute path, end
878         basedir with a directory separator.
879         Bug #440781 fixed.
880
881 2008-10-30  Mark Probst  <mark.probst@gmail.com>
882
883         * monitor.c (mono_monitor_get_fast_enter_method): If
884         CompareExchange is not available, don't create the fastpath
885         instead of asserting.  (The method is missing in the 1.1 profile.)
886
887 2008-10-30  Mark Probst  <mark.probst@gmail.com>
888
889         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
890
891         * monitor.c, monitor.h: Code for generating Monitor.Enter and
892         Monitor.Exit IL fastpaths.
893
894 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
895
896         * class.c (mono_class_create_from_typedef): Added Vector2ul.
897
898 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
899
900         * class.c (mono_class_create_from_typedef): Added Vector2l.
901
902 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * class.c (mono_class_create_from_typedef): Added Vector2d.
905
906 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
907
908         * appdomain.c: translate \ into / for cache_path.
909         * domain-internals.h: new mono_is_shadow_copy_enabled().
910         * icall.c: (fill_reflection_assembly_name) do the same path
911         manipulations that get_code_base does.
912         (get_code_base) use mono_is_shadow_copy_enabled.
913
914 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
915
916         * appdomain.c: shadow-copied assemblies go to CachePath +
917         ApplicationName when both are set. DynamicBase has nothing to do with
918         shadow copies.
919         Bug #406877 fixed.
920
921 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
922
923         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
924         STANDALONESIG table.
925
926         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
927         standalone signatures.
928
929         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
930         comparison code: instead of comparing the signatures using a custom
931         equals function, transform them to a common signature and compare that. This
932         works better with AOT.
933
934 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
935
936         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
937
938         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
939         call for generic instances.
940         (mono_class_setup_properties): Call setup_properties () before accessing
941         gklass->properties.
942
943         * class.c (mono_class_get_virtual_methods): New helper function to iterate
944         over the virtual methods of a class using metadata if possible, avoiding the
945         creation of MonoMethod's for non-virtual methods.
946         
947         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
948         get_virtual_methods () to iterate over the virtual methods of classes.
949
950 2008-10-25  Martin Baulig  <martin@ximian.com>
951
952         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
953
954 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
955
956         * class.c (mono_class_create_from_typedef): Added Vector4i.
957
958 2008-10-24  Mark Probst  <mark.probst@gmail.com>
959
960         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
961         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
962         special-casing applies to eliminate the call completely.
963
964 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
965
966         * class.c (mono_class_create_from_typedef): Added Vector8s.
967
968 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * class.c (mono_class_create_from_typedef): Added Vector16sb.
971
972 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
973
974         * icall.c: get rid of annoying warning.
975
976 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
977
978         * threadpool.c: in 1.x, if you change the background status of the
979         threadpool thread, it's not reset.
980         Remove unnecessary calls to SetState.
981
982 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
983
984         * threadpool.c: asynchronously create a set of idle threads upon first
985         use of the threadpool. SetMinThreads will now start the appropriate
986         number of idle threads if they are not already running. The default is
987         1 threadpool thread per CPU. Increased the maximum number of threads
988         per CPU to 10.
989
990 2008-10-22  Martin Baulig  <martin@ximian.com>
991
992         Revert r116521 from Zoltan, it breaks the debugger:
993
994         * class.c (mono_class_get_virtual_methods): New helper function to iterate
995         over the virtual methods of a class using metadata if possible, avoiding the
996         creation of MonoMethod's for non-virtual methods.
997         
998         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
999         get_virtual_methods () to iterate over the virtual methods of classes.
1000
1001 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1002
1003         * threads.c: when creating a threadpool thread, set its state to
1004         'background'.
1005         * threadpool.c: reset the background state of a threadpool thread
1006         after finishing each work item
1007         Bug #437888 fixed.
1008
1009 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
1012         
1013         * class.c (mono_class_setup_vtable_general): Add an optimized version for
1014         generic instances which works by inflating the methods in the container
1015         class's vtable.
1016
1017         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
1018         variant which doesn't make a copy if no inflation was done.
1019         (mono_class_setup_fields): Use it.
1020
1021         * metadata.c (mono_metadata_get_shared_type): New helper function to
1022         return a shared instance of a given MonoType.
1023
1024         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
1025         a copy of most non-generic types.
1026
1027 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
1028
1029         * threadpool.c: remove one more GetSystemInfo () call.
1030
1031 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
1032
1033         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
1034         use the code in mono-proclib.h to get processor information.
1035
1036 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1037
1038         * appdomain.c: fixed the logic that determines whether assemblies in a
1039         directory are "shadow-copied" or not. Bug #433483 fixed.
1040
1041 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
1042
1043         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
1044         warning.
1045
1046 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
1049         returning a vtype.
1050
1051         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
1052         reflection.c: Use mono_field_get_name () for accessing a field's name.
1053
1054         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
1055         class.c
1056
1057         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
1058         field.
1059
1060         * loader.c (find_method_in_class): Reenable the metadata optimization by
1061         not using it for generic instances.
1062
1063         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
1064         data/def_type fields from MonoClassField into a separate structure.
1065         (struct MonoClassField): Remove data/def_type fields.
1066         (struct _MonoClass): Add a 'field_def_values' array to store the default
1067         values/RVA for fields.
1068
1069         * class.c reflection.c: Update after the changes.
1070         
1071         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
1072         for accessing field->data.
1073
1074         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
1075
1076         * loader.c (find_method_in_class): Revert the last change for now as
1077         it breaks Mono.C5 unit tests.
1078
1079         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
1080         'field_generic_types' and 'field_objects' which contain the information
1081         previously stored in MonoInflatedField.
1082         (MonoInflatedField): Delete.
1083         (struct _MonoClassField): Delete 'generic_info' field.
1084
1085         * reflection.c: Store the information which was previously in 
1086         field->generic_info in MonoDynamicGenericClass instead.
1087
1088         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
1089         MonoClassField changes.
1090
1091 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
1092
1093         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
1094         store the value inside the data array of the MonoMethodWrapper.
1095         This saves memory, is faster and fixes the lifetime issues (methods
1096         were never removed from the hash previously). May also fix bug#436996.
1097
1098 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
1101         generic instances, compute the type from the generic definition instead of
1102         looking in field->generic_info.
1103
1104         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
1105         for inflated fields, the only user was get_fieldref_token () which no
1106         longer needs it.
1107
1108         * class.c (mono_class_init): Revert the last change as it seems to cause
1109         crashes.
1110
1111         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
1112         bytes on 64 bit platforms.
1113
1114         * object.c (mono_class_create_runtime_vtable): Fix a warning.
1115         
1116         * object.c (mono_class_create_runtime_vtable): Don't initalize
1117         field->data/field->def_type here, it is done lazily by 
1118         mono_class_get_field_default_value ().
1119
1120         * icall.c (ves_icall_get_enum_info): Call 
1121         mono_class_get_field_default_value () instead of directly accessing
1122         field->data and field->def_type.
1123
1124         * object.c (get_default_field_value): Ditto.
1125
1126         * class.c (mono_field_get_data): Ditto.
1127         
1128         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
1129         call for generic instances.
1130
1131         * loader.c (find_method_in_class): If klass != from_class, then inflate
1132         the method with the context of from_class, since the caller assumes this.
1133
1134 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
1137         for accessing method->slot.
1138
1139 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
1140
1141         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
1142
1143 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * class.c (mono_method_get_vtable_index): Use
1146         mono_method_get_vtable_slot () for accessing method->slot.
1147
1148         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
1149         accessing klass->methods.
1150
1151         * class.c (mono_method_get_vtable_slot): New helper function.
1152         (mono_class_get_vtable_entry): Ditto.
1153         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
1154         accessing method->slot.
1155
1156         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
1157         method to get_inflated_method ().
1158
1159         * class.c (mono_class_get_inflated_method): New helper method to obtain
1160         a method of an inflated class without calling setup_methods ().
1161         (mono_class_get_cctor): Use get_inflated_method.
1162
1163         * generic-sharing.c (mono_class_get_method_generic): Ditto.
1164         
1165         * marshal.c image.c: Lazily create all the marshal caches.
1166
1167         * image.c (mono_image_init): Move initialization of runtime_invoke
1168         caches to marshal.c.
1169
1170         * marshal.c (get_cache): New helper function to lazily initialize a 
1171         wrapper cache.
1172         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
1173
1174         * debug-helpers.c (mono_method_full_name): Include generic arguments.
1175
1176 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
1177
1178         * loader.c: fixed check for interface type.
1179
1180 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
1181
1182         * appdomain.c: check for NULL setup before it's referenced.
1183
1184 p
1185 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
1186
1187         * class.c: remove the unused old vtable setup code.
1188
1189 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
1190
1191         * class.c: don't depend on interface order in
1192         setup_interface_offsets (bug #435777).
1193         * reflection.c: sort the InterfaceImpl table (patch from
1194         Jb Evain  <jbevain@novell.com>).
1195
1196 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
1199         the low level assemblies lock.
1200
1201 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
1202
1203         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
1204         object.c, reflection.c, socket-io.c, threads.c: introduced
1205         mono_framework_version () to return the major framewrok version,
1206         changed the code that was using more complex patterns to use it.
1207         Return the correct value for PlatformID for OSX.
1208
1209 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
1210
1211         * icall-def.h, process.h, process.c: added an icall to get info about
1212         processes using mono-proclib.
1213
1214 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
1215
1216         * mono-perfcounters.c: use the mono-proclib functions to
1217         access process information.
1218
1219 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
1220
1221         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
1222         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
1223         reflection.c: remove rawbuffer usage: mmap support is more sanely
1224         provided by utils/mono-mmap.
1225
1226 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
1227
1228         * gc.c: use posix semaphores when possible so that
1229         mono_gc_finalize_notify() is signal safe.
1230
1231 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
1232
1233         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
1234         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
1235         be #ifdef-ed out, the linker will remove the rest.
1236
1237         * marshal.c: Implement DISABLE_COM.
1238
1239         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
1240
1241 2008-10-11  Miguel de Icaza  <miguel@novell.com>
1242
1243         * locales.c (string_invariant_compare_char): Optimization: do not
1244         call g_unichar_type unless we actually need the information.
1245
1246 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1247
1248         * object.c, class-internals.h: Also create remoting trampolines
1249         for generic methods.  Pass the domain to the remoting trampoline
1250         creation function, too.
1251
1252 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
1255
1256 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1257
1258         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
1259         Vector4ui.
1260
1261 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1262
1263         * assembly.c:
1264         * locales.c: remove the use of g_strdown. Fixes bug #322313.
1265
1266 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
1267
1268         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
1269         for the least possible amount of time (extending the fix in r113458).
1270
1271 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1272
1273         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
1274
1275 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1276
1277         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
1278         as possible simd intrinsic types.
1279         Optimized the test to check for the common prefix first.
1280
1281 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
1282
1283         * class.c: back out part of a broken optimization committed on
1284         May 23th (bug #433908).
1285
1286 2008-10-09  Mark Probst  <mark.probst@gmail.com>
1287
1288         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
1289         Win32.  Should fix #432388 for most cases until we have the new
1290         profiler on Win32.
1291
1292 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
1295         instead of using inst->id so the hash is stable for AOT.
1296
1297 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
1298
1299         * appdomain.c:
1300         * icall.c: create a .ini file for shadow-copied assemblies that
1301         contains the location of the original assembly. Use this to return the
1302         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
1303         Also fix the number of '/' for windows when returning the CodeBase.
1304         Fixes bug #430920.
1305
1306 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1307
1308         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
1309
1310         Code is contributed under MIT/X11 license.
1311
1312 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1313
1314         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
1315           if if the class vtable needs initialized.
1316
1317         Code is contributed under MIT/X11 license.
1318
1319 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1320
1321         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
1322           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
1323           STRING->BSTR, and CLASS->INTERFACE.
1324
1325         Code is contributed under MIT/X11 license.
1326
1327 2008-10-07  Marek Habersack  <mhabersack@novell.com>
1328
1329         * sysmath.h: changed the declaration of the
1330         ves_icall_System_Math_Round2 icall by adding an extra
1331         away_from_zero parameter.
1332
1333         * sysmath.c (ves_icall_System_Math_Round2): added support for
1334         away from zero rounding. The icall now takes an extra boolean
1335         parameter to signal that away from zero operation is requested.
1336
1337 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1338
1339         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
1340         the delegate klass so it can work with full-aot.
1341         (mono_marshal_get_delegate_end_invoke): Ditto.
1342         (mono_marshal_get_delegate_invoke): Ditto.
1343
1344 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
1345
1346         * gc.c, attach.h, attach.c: remove a bad pattern:
1347         add_finalizer_callback () is not implemented correctly, it can't
1348         without adding more overhead to the finalizer loop and it's not
1349         even needed, since we know exactly what we need to call, so there is
1350         no need to do so through an expensive function pointer.
1351
1352 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
1355         for the no-gc case.
1356         * attach.c (mono_attach_init): Remove the #ifdef.
1357
1358 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
1359
1360         * attach.c (mono_attach_init): Don't use
1361         mono_gc_add_finalizer_thread_callback when compiling without GC.
1362         Fixes #432306.
1363         
1364         Code is contributed under MIT/X11 license.
1365
1366 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * class.c (mono_class_create_from_typedef): Remove the 
1369         #ifndef DISABLE_SIMD stuff.
1370
1371 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1372
1373         * class-internals.h (MonoClass): Added simd_type bit field.
1374
1375         * class.c (mono_class_create_from_typedef): Check if type is a simd
1376         intrinsic.
1377
1378 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1379
1380         * object.c (mono_method_add_generic_virtual_invocation): Only add
1381         instantiations to the thunk whose count is at least as large as
1382         the threshold.
1383
1384 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1385
1386         * icall.c: changed the Type of the exception thrown when trying to
1387         invoke a constructor on an abstract class. Part of the fix for bug
1388         #324185.
1389
1390 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1391
1392         * class.c, class-internals.h (mono_method_get_vtable_index): New
1393         function which returns the index into the vtable and properly
1394         handles inflated virtual generic methods.
1395
1396 2008-10-01  Mark Probst  <mark.probst@gmail.com>
1397
1398         * object.c, domain.c, object-internals.h, domain-internals.h:
1399         Generalize IMT thunk machinery to also handle thunks for virtual
1400         generic method invokes.  When a virtual generic method is invoked
1401         more than a number of times we insert it into the thunk so that it
1402         can be called without lookup in unmanaged code.
1403
1404         * generic-sharing.c, class-internals.h: Fetching a
1405         MonoGenericInst* for a method from an (M)RGCTX.
1406
1407 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * marshal.c (emit_marshal_string): Applied a variant of a patch by
1410         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
1411         marshalling. Fixes #431304.
1412
1413 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
1414
1415         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
1416           handle when ref is specified without In or Out.
1417
1418         Code is contributed under MIT/X11 license.
1419
1420 2008-09-30  Mark Probst  <mark.probst@gmail.com>
1421
1422         * loader.c (mono_get_method_constrained): Don't expand method with
1423         the class's context, because it's already a method of that class.
1424
1425 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
1426
1427         * attach.c : should be correct build fix.
1428
1429 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
1430
1431         * attach.c: Fix the previous change.
1432
1433 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
1434
1435         * attach.c : quick w32 build fix.
1436
1437 2008-09-27  Miguel de Icaza  <miguel@novell.com>
1438
1439         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
1440         crashes MonoDevelop: #430455.
1441
1442 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * domain-internals.h (struct _MonoDomain): Move most fields used only by
1445         the JIT do MonoJitDomainInfo in ../mini/mini.h.
1446
1447         * domain.c: Remove initialization/cleanup of the removed fields.
1448
1449 2008-09-27  Mark Probst  <mark.probst@gmail.com>
1450
1451         * class.c (mono_class_generic_sharing_enabled): Enable generic
1452         code sharing for PPC.
1453
1454 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
1455
1456         * attach.c : Fixing the Windows builds.
1457
1458         Code is contributed under MIT/X11 license.
1459
1460 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
1461
1462         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
1463         the default generic sharing mode to 'all'.
1464
1465 2008-09-25  Mark Probst  <mark.probst@gmail.com>
1466
1467         * generic-sharing.c, class-internals.h: New function for checking
1468         whether a method needs a static RGCTX invoke wrapper.  A few
1469         funtions moved from mini/generic-sharing.c.
1470
1471         * icall.c: New function used.
1472
1473 2008-09-25  Mark Probst  <mark.probst@gmail.com>
1474
1475         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
1476         Static RGCTX invoke wrapping applies to value type methods, too.
1477
1478         * class.c (mono_class_setup_vtable_general): In generic-shared
1479         value types, wrap methods with a static RGCTX invoke wrapper.
1480
1481 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
1484         osx build.
1485
1486 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
1487
1488         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
1489         register a callback which is called when the finalizer thread is woken
1490         up.
1491         (finalizer_thread): Call the callback if it exists.
1492
1493         * attach.h attach.c: New files, implementing the attach mechanism.
1494
1495         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
1496         
1497         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
1498         by the previous change.
1499
1500 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
1501
1502         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
1503         loader.c, marshal.c, metadata-internals.h, metadata.c,
1504         method-builder.c, object.c, reflection.c: introduced specific functions
1505         to allocate from the domain and image mempools and cleaned up most of
1506         the code to use them (still missing a few in reflection.c).
1507         Keep the loader bytes counter updated.
1508
1509 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
1510
1511         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
1512         loader-related counters.
1513
1514 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
1515
1516         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
1517         added more MS-compatible counters.
1518
1519 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * class.c (mono_class_setup_fields): Call setup_fields before accessing
1522         class->blittable. Fixes #428217.
1523
1524 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * reflection.c (mono_image_get_field_on_inst_token): Call 
1527         field_encode_signature () since that handles custom modifiers too.
1528         Fixes #424663.
1529
1530 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * reflection.c (add_custom_modifiers): New helper function to merge custom
1533         modifiers stored in objects to a MonoType.
1534         (fieldref_encode_signature): Encode custom modifiers.
1535         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
1536         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
1537
1538 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
1539
1540         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
1541         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
1542         64-bit IL only images because imports are not resolved for IL only images.
1543         Special thanks to Bill Holmes for finding this bug and testing the patch.
1544         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
1545
1546         Contributed under MIT/X11 license.
1547
1548 2008-09-19  Miguel de Icaza  <miguel@novell.com>
1549
1550         * mono-config.c (dllmap_start): Add support for the bits keyword
1551         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
1552
1553 2008-09-19  Mark Probst  <mark.probst@gmail.com>
1554
1555         * reflection.c (inflate_mono_method): When the class the method is
1556         to be inflated for is itself not inflated, just return the method.
1557
1558 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
1559
1560         * mono-perfcounters.c: use more user friendly process instance names.
1561
1562 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
1563
1564         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
1565           handle "[in] ref" and "[in][out] ref" cases.
1566
1567         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
1568           to mono_mb_create_method.  This was causing problems calling native to
1569           managed passing Variants by value.
1570
1571         Code is contributed under MIT/X11 license.
1572
1573 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * class.c (can_access_internals): Call mono_assembly_load_friends ()
1576         before accessing the friend_assembly_names field.
1577
1578         * assembly.c (mono_assembly_load_friends): Make this callable multiple
1579         times.
1580         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
1581         called lazily when it is needed.
1582
1583         * metadata-internals.h (struct _MonoAssembly): Add 
1584         'friend_assembly_names_inited' flag.
1585
1586 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
1587
1588         * mono-perfcounters-def.h: fix the types of a few counters.
1589         * mono-perfcounters.c: implemented the instance names getter
1590         and a few bugfixes.
1591
1592 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
1593
1594         * culture-info-table.h : regenerated.
1595
1596 2008-09-17  Robert Jordan  <robertj@gmx.net>
1597
1598         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
1599         context bound objects. Fixes #415577.
1600
1601         Code is contributed under MIT/X11 license.
1602
1603 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
1604
1605         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
1606         implementation (bug #423582).
1607
1608 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * object.c (mono_object_get_virtual_method): Handle the case method->slot
1611         is not set. Fixes #426309.
1612
1613 2008-09-16  Jb Evain  <jbevain@novell.com>
1614
1615         * class.c (mono_class_from_name): fix the exported type look up
1616         when the type is defined in a referenced assembly.
1617
1618 2008-09-16  Jb Evain  <jbevain@novell.com>
1619
1620         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
1621         increment the next index counter on each iteration to make that work
1622         for more than one type forwarder. Unmanaged part to fix #422929.
1623
1624 2008-09-15  Mark Probst  <mark.probst@gmail.com>
1625
1626         * object-internals.h: enum ComInterfaceType in
1627         MonoInterfaceTypeAttribute is guint32, not guint16.
1628
1629 2008-09-12  Mark Probst  <mark.probst@gmail.com>
1630
1631         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
1632         writing code.
1633
1634 2008-09-11  Mark Probst  <mark.probst@gmail.com>
1635
1636         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
1637         not gboolean.
1638
1639 2008-09-11  Mark Probst  <mark.probst@gmail.com>
1640
1641         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
1642         Endianness fixes for MonoSymbolFileOffsetTable.
1643
1644 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
1645
1646         * process.c (complete_path) : Removing quotes from the 
1647           input path.  The glib file routines do not handle file paths
1648           that have quotes around them.
1649
1650         Code is contributed under MIT/X11 license.
1651
1652 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
1653
1654         * socket-io.h : Adding a comment to provide locations where 
1655           changes to MonoSocketAsyncResult need to be synced.
1656
1657         Code is contributed under MIT/X11 license.
1658
1659 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
1662         parameters as well. Fixes #425001.
1663
1664 2008-09-08  Miguel de Icaza  <miguel@novell.com>
1665
1666         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
1667         windows build.
1668
1669 2008-09-07  Miguel de Icaza  <miguel@novell.com>
1670
1671         * console-io.c: Add support for tracking the window size if it
1672         changes.
1673
1674         The setup is very simple: the TtySetup function will now return a
1675         pointer to a location in memory that tracks the current console
1676         size.  The managed code checks its current value every time its
1677         queried against the last value set, and updates accordingly.
1678
1679         With this setup we can work with multiple consoles, and we do not
1680         require to poke into managed code from a signal handler.
1681
1682         Additionally, the environment for COLUMNS and LINES is now handled
1683         in unmanaged code.
1684
1685         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
1686
1687 2008-09-07  Mark Probst  <mark.probst@gmail.com>
1688
1689         * marshal.c (mono_type_native_stack_size): Treat
1690         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
1691
1692 2008-09-04  Jb Evain  <jbevain@novell.com>
1693
1694         * class.c (mono_class_is_assignable_from): fix assignability of nullables
1695         to nullables.
1696
1697 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
1698
1699         * verify.c (verify_type_compatibility_full): Revert change
1700         to allow converting a native int to unmanaged pointer be verifiable
1701         under non-strict mode.
1702         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
1703
1704         * verify.c: Added some TODOs.
1705
1706 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
1707
1708         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
1709           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
1710           Changed to use GlobalAlloc for the memory returned on Windows platforms.
1711
1712         Code is contributed under MIT/X11 license.
1713
1714 2008-09-02  Jb Evain  <jbevain@novell.com>
1715
1716         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
1717
1718 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
1719
1720         reflection.c (typebuilder_setup_fields): Handle classes with
1721         explicit size.
1722
1723 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
1724
1725         class.c (mono_class_setup_events): Add memory barrier due to
1726         double checked locking.
1727         
1728         class.c (mono_class_setup_properties): Same.
1729
1730 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * class.c (mono_class_is_assignable_from): Fix the build.
1733         
1734         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
1735         before accessing klass->interface_bitmap. Fixes #421744.
1736
1737 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
1740         the runtime into no-exec mode, useful when running the AOT compiler.
1741
1742         * appdomain.c gc.c object.c: Avoid executing managed code when running
1743         in no-exec mode.
1744         
1745         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
1746
1747         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
1748         special case when the mono_assembly_loaded () returns NULL because the 
1749         search hook is not installed.
1750
1751 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
1754         crashes in bstr marshalling on linux.
1755
1756 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
1757
1758         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
1759         with more than one parameter.
1760
1761 2008-08-24  Miguel de Icaza  <miguel@novell.com>
1762
1763         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
1764         start/stop flow control as well when turning off ICANON (allows
1765         C-s and C-q to be read by Console.ReadKey).
1766
1767 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * class.c (mono_class_init): Move the initialization of nested classes
1770         into mono_class_get_nested_types (). Fixes #418433.
1771
1772         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
1773         flag.
1774
1775         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
1776         iterating tough the nested classes of a class.
1777
1778 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
1781         on arm.
1782
1783 2008-08-22  Miguel de Icaza  <miguel@novell.com>
1784
1785         * console-io.c (sigcont_handler): Support signal chaining for
1786         SIGCONT.
1787
1788         (console_set_signal_handlers): Use best practices with sigaction,
1789         clear the structure before using it. 
1790
1791 2008-08-22  Robert Jordan  <robertj@gmx.net>
1792
1793         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
1794         Fix the Windows build.
1795
1796 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * class.c (mono_class_generic_sharing_enabled): Make the default
1799         sharing mode 'corlib'.
1800
1801 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * console-io.c (console_set_signal_handlers): Fix a warning.
1804
1805         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
1806         method normally, the JIT will take care of avoiding recursion.
1807
1808 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
1809
1810         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
1811
1812         Code is contributed under MIT/X11 license.
1813
1814 2008-08-20  Miguel de Icaza  <miguel@novell.com>
1815
1816         * console-io.c (sigcont_handler): We need to restore the entire
1817         termios state, not only the original settings, as things like echo
1818         can be controlled after this (Booish exposes this issue with its
1819         own ReadLine implementation).
1820
1821         Additionally, we need to set the terminal back into keypad_xmit
1822         mode.
1823         
1824         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
1825         string as a paramter as well.   Otherwise we get different
1826         keyboard sequences.
1827
1828 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
1829
1830         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
1831         delegates with byref out parameter passing. Fixes #351520.
1832
1833         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
1834         a generic context.
1835         (mono_type_get_desc): Add the type arguments for GENERICINST.
1836         (mono_method_full_name): Stringify the class name using mono_type_full_name
1837         so it picks up generic arguments.
1838
1839 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
1840
1841         * console-io.c: Removed debug output.
1842
1843 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
1844
1845         reflection.c (mono_reflection_create_runtime_class): Alloc
1846         the nested classes linked list using the dynamic image mempool.
1847         Fixes leak in corlib compilation.
1848
1849 2008-08-19  Miguel de Icaza  <miguel@novell.com>
1850
1851         * console-io.c: Fix incredibly annoying behavior on the console
1852         after resuming execution after control-z.   This affected every
1853         console application.
1854
1855 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
1856
1857         * mempool-internals.h: Header for mono private mempool functions. The first
1858         two function are for allocating glib linked lists using pools.
1859
1860         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
1861
1862         * Makefile.am: Added mempool-internals.h.
1863
1864 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
1867         (mono_domain_free): Ditto.
1868
1869         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
1870         be used by the JIT to store its domain-specific information, instead of putting
1871         it directly into MonoDomain.
1872
1873         * domain.c (mono_install_create_domain_hook): New helper function to install
1874         a hook which initializes domain->runtime_info.
1875
1876         * domain.c (mono_install_free_domain_hook): Ditto.
1877         
1878 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
1881         asserting if the ares parameter is null.
1882
1883         * mono-perfcounters.c: Fix warnings.
1884
1885         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
1886         is not needed, don't check for interruptions either.
1887         (mono_marshal_get_delegate_end_invoke): Ditto.
1888
1889 2008-08-15  Marek Habersack  <mhabersack@novell.com>
1890
1891         * mono-perfcounters.c (predef_readonly_counter): added support for
1892         reading the ASP.NET Requests Queued counter from another process.
1893
1894 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
1895
1896         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
1897         MonoImage to simplify the AOT code.
1898
1899 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
1900
1901         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
1902         marshalling. Fixes #416078.
1903
1904 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
1905         
1906         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
1907         it is set, looking up the icall address is deferred to the JIT, since 
1908         in embedded scenarios, the icall might not be registered in the runtime
1909         doing the AOT compilation. Backported from the 2.0 branch.
1910
1911 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
1914         Fixes #415621.
1915
1916 2008-08-05  Marek Habersack  <mhabersack@novell.com>
1917
1918         * Makefile.am: added support for cross-compilation.
1919
1920 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
1923
1924 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
1925
1926         * mono-perfcounters.c: jitted methods and jitted bytes counters.
1927
1928 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
1929
1930         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
1931         mono-perfcounters.c: performance counters implementation.
1932
1933 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
1936         to gpointer, letting the AOT code decide what to store in it.
1937
1938 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
1939
1940         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
1941           mono_class_setup_methods if the methods are not initialized.
1942
1943         Code is contributed under MIT/X11 license.
1944
1945 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
1946
1947         * verify.c: Remove some debug code I commited by accident.
1948
1949         * verify.c (mono_method_is_valid_in_context): Change the return value
1950         to make possible to distinguish between invalid and unverifiable.
1951
1952         * verify.c (verifier_load_method): Don't return NULL for unverifiable
1953         methods.
1954
1955 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
1956
1957         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
1958         constraints. Fixes regression in gtest-253.
1959
1960 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
1961
1962         * verify.c (mono_verifier_verify_class): Don't allow generic types
1963         with explicit layout.
1964
1965         * verify.c (mono_method_verify): Check locals and argument types.
1966
1967 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
1970         wait if the thread is in StopRequested state.
1971
1972         * class.c (mono_class_from_name): Refactor the module searching code into
1973         a separate function so it can be reused in the AOT case too.
1974
1975 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         * verify.c (mono_type_is_valid_in_context): Improve the error message.
1978         Check both the type and it's generic type definition for loader errors.
1979         
1980         * verify.c (mono_method_is_valid_in_context): Don't generate another
1981         error when a type errors occur, this leads to the wrong exception been
1982         thrown.
1983
1984 2008-07-28  Dick Porter  <dick@ximian.com>
1985
1986         * icall-def.h
1987         * process.c
1988         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
1989         New internal calls to duplicate and close a process handle.
1990
1991 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
1992
1993         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
1994
1995 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
1996
1997         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
1998
1999 2008-07-27  Robert Jordan  <robertj@gmx.net>
2000
2001         * class.c (mono_class_init): Don't compute class.has_finalize for
2002         valuetypes. Fixes #412477.
2003
2004 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
2005
2006         * verify.c: Implement constraint equivalence checking.
2007         This is required when a generic parameter is used as
2008         argument to a constrained one.
2009
2010         Fixes #410637.
2011
2012 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2015
2016         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
2017
2018         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
2019         synch with managed object layout.
2020
2021 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
2022
2023         * verify.c (do_branch_op): Handle valuetypes and generic
2024         arguments properly.
2025
2026         * verify.c (do_cmp_op): Same.
2027
2028         Fixes #410383.
2029
2030 2008-07-24  Mark Probst  <mark.probst@gmail.com>
2031
2032         * generic-sharing.c: Fix memory leaks.
2033
2034         * class.c, class-internals.h: Make
2035         mono_class_inflate_generic_type_with_mempool() non-static.
2036
2037 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         * pedump.c (dump_verify_info): Dump full class name.
2040
2041 2008-07-24  Mark Probst  <mark.probst@gmail.com>
2042
2043         * generic-sharing.c: Removed some old code that didn't do anything.
2044
2045 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
2046         * profiler.c: Added runtime_initialized_event,
2047         mono_profiler_install_runtime_initialized and
2048         mono_profiler_runtime_initialized. This new hook tells the profiler
2049         when the runtime is sufficiently initialized to be able to call
2050         mono_thread_attach on the root appdomain.
2051         * profiler.h, profiler-private.h: Likewise.
2052
2053 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
2054
2055         * verify.c (do_cast): Do boxing for generic arguments as well.
2056
2057         * class.c (is_nesting_type): Drop generic instantiations before
2058         checking for nesting.
2059
2060         * class.c (can_access_instantiation): Allow access to generic
2061         arguments.
2062
2063 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
2064
2065         * verify.c (verify_class_for_overlapping_reference_fields):
2066         On some cases, the field size might be zero, guard against that.
2067         Fix the explicit layout check to work as expected.
2068
2069 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
2072         mono_thread_resume () during shutdown, since the thread we want to abort
2073         might be suspended.
2074
2075 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
2078         warning.
2079
2080         * debug-mono-symfile.c: Fix a warning.
2081
2082         * mono-perfcounters.c (get_cpu_times): Fix a warning.
2083
2084         * object.c (mono_class_vtable): Check if exception_type is set, and return
2085         NULL as defined by the function comments.
2086
2087 2008-07-22  Mark Probst  <mark.probst@gmail.com>
2088
2089         * mempool.c: Use malloc for every single mempool allocation if the
2090         configure option is set.  This makes it easier to track mempool
2091         allocations with tools like Valgrind.
2092
2093 2008-07-22  Jb Evain  <jbevain@novell.com>
2094
2095         * reflection.c (create_dynamic_mono_image): emit the same
2096         metadata version that SL2 does when creating a SL2 image.
2097
2098 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
2099
2100         * icall-def.h:
2101         * icall.c: New icall System.Enum:get_hashcode. This function
2102         avoids the overhead of boxing the enum to the underlying type.
2103
2104 2008-07-21  Mark Probst  <mark.probst@gmail.com>
2105
2106         * reflection.c (mono_method_get_object): Don't let static RGCTX
2107         invoke wrappers get into MonoReflectionMethods.
2108
2109 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
2110
2111         * object-internals.h:
2112         * object.c: New mono_runtime_class_init_full function
2113         that makes throwing the exception optinal.
2114
2115         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
2116         for the case where the exception object is supplied.
2117
2118 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
2119
2120         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
2121         old ld versions.
2122
2123         Contributed under MIT/X11 license.
2124
2125 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
2126
2127         * string-icalls.c (ves_icall_System_String_InternalSplit):
2128         Optimize array allocation by caching the MonoClass of the
2129         array type.
2130
2131         * icall.c (ves_icall_Type_GetMethodsByName): Same.
2132
2133         * reflection.c (mono_param_get_objects): Same.
2134
2135 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * icall-def.h:
2138         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
2139         It inflates the given type using the class context.
2140
2141 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2142
2143         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
2144         the vtable if it already exists.
2145
2146         * object-internals.h: Add mono_class_try_get_vtable as part of the
2147         internal API.
2148
2149         * reflection.c (mono_type_get_object): Use the MonoObject from the
2150         vtable when possible. Reduces locking contention on reflection heavy
2151         code.
2152
2153 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
2156         g_bit_nth_msf () since that macro is not implemented in eglib.
2157
2158 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
2161         on platforms which do not support it.
2162
2163 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
2166
2167 2008-07-11  Martin Baulig  <martin@ximian.com>
2168
2169         * mono-debug-debugger.h
2170         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
2171
2172         * mono-debug-debugger.c
2173         (_mono_debugger_interruption_request): New global volatile variable.
2174         (mono_debugger_check_interruption): New public function.
2175
2176         * threads.c
2177         (mono_thread_current_check_pending_interrupt): Call
2178         mono_debugger_check_interruption().
2179         (mono_thread_interruption_checkpoint_request): Likewise.
2180
2181 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2182
2183         * verify.c: Add more type checks for loaded types. Verify the result
2184         handle from ldtoken.
2185
2186 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2187
2188         * loader.c (field_from_memberref): Don't crash if the field
2189         wasn't found.
2190
2191 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2192
2193         * verify.c: Verify if type and method instantiations
2194         don't have invalid VAR or MVAR arguments.
2195
2196 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2197
2198         * verify.c: Fix double free of function pointer list.
2199
2200 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2201
2202         * object.c (mono_string_to_utf8): Comment the new code as it
2203         breaks under eglib.
2204
2205 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
2206
2207         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
2208
2209 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
2210
2211         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
2212           is not throw too many times.
2213
2214         Code is contributed under MIT/X11 license.
2215
2216 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
2219         debugging is turned off.
2220
2221 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
2224
2225 2008-07-04  Mark Probst  <mark.probst@gmail.com>
2226
2227         * class-internals.h, class.c: Added new generic sharing option:
2228         Share only stuff in System.Collections.Generic, which is now the
2229         default.
2230
2231 2008-07-04  Mark Probst  <mark.probst@gmail.com>
2232
2233         * generic-sharing.c, class-internals.h: New function for getting a
2234         generic method in a generic class given the corresponding method
2235         for a different instantiation of the class.  Partly refactored
2236         from mini-trampolines.c.
2237
2238         * class.c: Make sure generic methods have a class_inst if they are
2239         part of a generic class.
2240
2241         * metadata.c (mono_type_stack_size_internal): Handle type
2242         variables.
2243
2244 2008-07-04  Mark Probst  <mark.probst@gmail.com>
2245
2246         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
2247         Signifies whether information on the this/vtable/mrgctx variable
2248         is available.
2249
2250 2008-07-04  Mark Probst  <mark.probst@gmail.com>
2251
2252         * object.c, object-internals.h, icall.c: New function
2253         mono_delegate_ctor_with_method(), which does the same as
2254         mono_delegate_ctor(), but takes an explicit method argument
2255         instead of taking the method from the jit info.
2256
2257         * marshal.c: When creating a delegate with an inflated method take
2258         the "this" argument as the target class for the castclass.
2259
2260 2008-07-03  Mark Probst  <mark.probst@gmail.com>
2261
2262         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
2263         mono_jit_info_table_find() to perform very badly in some cases.
2264
2265 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
2266
2267         * icall.c (type_from_typename): Handle 'string'.
2268
2269         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
2270         wrappers into the wrapper_hash, since the key is not a MonoMethod.
2271
2272 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
2275
2276         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
2277         number of available managed allocator types.
2278
2279         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
2280         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
2281
2282 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
2285         which is a low level lock protecting just the 'jit_code_hash' hash table.
2286
2287         * domain.c: Initialize+cleanup jit_code_hash_lock.
2288         
2289 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
2290
2291         * coree.c (mono_load_coree): Set coree_module_handle global variable only
2292         after initialization.
2293
2294         * coree.h: Make MonoFixupExe internal.
2295
2296         Contributed under MIT/X11 license.
2297
2298 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
2299
2300         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
2301         because that is platform independent. Check NumberOfRvaAndSizes in PE32
2302         as well.
2303         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
2304         image being loaded is a CLI image and _CorValidateImage gets called.
2305
2306         * coree.h: Add MonoLoadImage.
2307
2308         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
2309         instead of LoadLibrary.
2310
2311         Contributed under MIT/X11 license.
2312
2313 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
2314
2315         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
2316         for any primitive type.
2317
2318 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
2319
2320         * object.c (mono_array_new_specific): Optimize this and the other allocation
2321         functions a bit.
2322         
2323         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
2324         domains too if mono_dont_free_domains is set.
2325
2326         * domain-internals.h (mono_dont_free_domains): New internal option controlling
2327         whenever to free appdomain data after it has been unloaded.
2328
2329         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
2330         
2331 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
2334         (mono_method_get_equivalent_method): Fix a warning.
2335
2336         * object.c (mono_message_init): Avoid looking up array types for each call.
2337
2338 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
2341         call.
2342
2343         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
2344         even more.
2345
2346         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
2347         each iteration.
2348
2349         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
2350         fields of an enum.
2351
2352 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
2353
2354         * object.c (mono_value_box): Fix boxing of nullables.
2355
2356 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
2357
2358         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
2359         mono_module_handle that is defined by the linker; no initialization required.
2360         * coree.h: Remove mono_module_handle, add __ImageBase, update
2361         mono_image_open_from_module_handle.
2362         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
2363         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
2364         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
2365         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
2366         to 4 GB away from image base address. IA64 version is not tested but was very
2367         easy to implement and should work if we ever need it.
2368         * domain.c (mono_init_internal): Avoid system error message boxes.
2369         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
2370         with has_entry_point. Handle do_mono_image_load fauilre correctly.
2371         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
2372         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
2373         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
2374
2375         Contributed under MIT/X11 license.
2376
2377 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
2378
2379         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
2380         as part of the private mono API.
2381         
2382         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
2383         Do proper argument checking for methods that belong to generic classes.
2384         Do proper type resolution for GMFH/2.
2385         Fixes #377324.
2386         
2387 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
2388
2389         * verify.c (do_switch): Fix a memory corruption bug with
2390         the jump index is out of bound.
2391
2392 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
2393
2394         * verify.c: Disable debug code.
2395
2396 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
2397
2398         * reflection.c (mono_image_get_methodbuilder_token): Use
2399         mono_image_get_methodspec_token_for_generic_method_definition
2400         instead of mono_image_get_memberref_token. We cache more memberef
2401         entries now.
2402
2403 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
2404
2405         * verify.c: Inflate exception clause types.
2406         Fixes #402606.
2407         
2408 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
2409
2410         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
2411         name.
2412
2413         * reflection.c (mono_image_get_ctorbuilder_token): Same.
2414
2415         * reflection.c (mono_image_create_method_token): Same.
2416
2417 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
2418
2419         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
2420         It does the same as mono_image_get_methodref_token but works on
2421         MethodBuilder.
2422
2423         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
2424         and always generate a methodspec. This follows the old behavior and fixes
2425         the regressions in System.Core. 
2426
2427 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
2428
2429         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
2430         don't event mono_class_get () succeeds. Fixes #402182.
2431
2432 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
2433
2434         * metadata-internals.h: Added MonoDynamicImage::methodspec
2435         hashtable to store methodspec tokens created for MethodBuilders.
2436
2437         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
2438         MethodBuilders as open instantiations if a methodspec was requested.
2439
2440         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
2441
2442         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
2443
2444         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
2445
2446         Fixes bug #349190.
2447
2448 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
2449
2450         * loader.c (method_from_methodspec): Avoid crashing if the
2451         method lookup fails.
2452
2453 2008-06-20  Dick Porter  <dick@ximian.com>
2454
2455         * socket-io.c (get_socket_assembly): Cope with Moonlight network
2456         classes being in a different assembly.  Fixes bug 399184.
2457
2458 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * loader.c (mono_loader_init): Make this callable multiple times.
2461         (mono_dllmap_insert): Call mono_loader_init () so this works even before
2462         the runtime is initialized. Fixes #401755.
2463
2464 2008-06-19  Dick Porter  <dick@ximian.com>
2465
2466         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
2467         Fixes bug 349688.
2468
2469 2008-06-19  Dick Porter  <dick@ximian.com>
2470
2471         * socket-io.c:
2472         * icall-def.h: Implement Socket generic Send() and Receive()
2473         methods.  Fixes bug 395168.
2474
2475 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
2476
2477         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
2478
2479         Contributed under MIT/X11 license.
2480
2481 2008-06-18  Martin Baulig  <martin@ximian.com>
2482
2483         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
2484         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
2485         set to 80.0.  The debugger <-> runtime interface is now frozen as
2486         well.   
2487
2488         * mono-debug.c
2489         (mono_debug_debugger_version): Bump to 4.
2490
2491 2008-06-18  Martin Baulig  <martin@ximian.com>
2492
2493         * debug-mono-symfile.c
2494         (load_symfile): Don't check the minor version.
2495
2496         * debug-mono-symfile.h: Bump the version number to 50.0.
2497
2498 2008-06-18  Martin Baulig  <martin@ximian.com>
2499
2500         * debug-mono-symfile.c
2501         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
2502         minimum required version.
2503
2504 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
2505
2506         * reflection.c (mono_custom_attrs_from_property): Fix support for
2507         retriveving cattrs of dynamic inflated generic types.
2508
2509         * reflection.c (mono_custom_attrs_from_event): Same.
2510
2511         * reflection.c (mono_custom_attrs_from_field): Same;
2512
2513         * reflection.c (typebuilder_setup_events): Same cattrs of events.
2514
2515         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
2516         Moved to metadata.c.
2517
2518         * metadata.c: New functions to retrive the equivalent field, event
2519         of property from the generic type definition.
2520
2521         * metadata-internals.h: Added new functions from metadata.c.
2522
2523 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
2524
2525         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
2526         to cached in a mempool is used.
2527
2528         * metadata.c (free_generic_class): In some situations field generic_info type
2529         is not properly dup'ed and leads to double free'ing.
2530
2531         Fixes #400643.
2532
2533 2008-06-17  Mark Probst  <mark.probst@gmail.com>
2534
2535         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
2536         this arguments (will be needed later for generic methods).
2537         Collect stats.
2538
2539 2008-06-17  Mark Probst  <mark.probst@gmail.com>
2540
2541         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
2542         Create a static RGCTX invoke wrapper for methods which require it.
2543
2544 2008-06-17  Mark Probst  <mark.probst@gmail.com>
2545
2546         * object.c, class-internals.h: New function for checking whether
2547         an individual field is special static.
2548
2549 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
2552         linear search since the table is sorted.
2553
2554         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
2555         Fixes #324180.
2556
2557 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
2560         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
2561
2562         * gc.c (mono_domain_finalize): Allow an infinite timeout.
2563
2564         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
2565         
2566         * threads.c (mono_thread_request_interruption): Get rid of locking, use
2567         InterlockedCompareExchange to query and modify 
2568         thread->interruption_requested.
2569
2570         * object-internals.h (struct _MonoThread): Change interruption_requested
2571         to a gint32 so it can be modified by atomic operations. Add 
2572         'critical_region_level' from the managed side, change small_id to a guint32,
2573         add new set of 'unused' fields.
2574
2575         * appdomain.c: Bump corlib version.
2576
2577 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * class.c (mono_class_from_name): Search modules as well. Fixes
2580         #322332.
2581
2582 2008-06-13  Mark Probst  <mark.probst@gmail.com>
2583
2584         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
2585         templates.  Templates are generalized with an additional type_argc
2586         argument.  RGCTX templates have type_argc==0, MRGCTX templates
2587         have type_argc>0.
2588
2589         * domain-internals.h, domain.c: New hash table for looking up
2590         MRGCTXs.
2591
2592         * metadata.c, metadata-internals.h: Rename hash and equal
2593         functions for MonoGenericInst's and make them public.
2594
2595         * class-internals.h: New data structures for the MRGCTX.  Macros
2596         for distinguishing slots in the RGCTX and the MRGCTX.
2597
2598 2008-06-13  Mark Probst  <mark.probst@gmail.com>
2599
2600         * object.c (mono_method_get_imt_slot): Put the same methods of
2601         different instantiations of the same generic interface in the same
2602         IMT slots, to make generic sharing simpler.
2603
2604 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
2605
2606         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
2607
2608         * metadata.c (mono_metadata_field_info_with_mempool): Added.
2609         This function works just like mono_metadata_field_info, but
2610         accept a mempool as argument to be used allocating memory.
2611
2612         * marshal.c (mono_marshal_load_type_info): Use new function
2613         to load marshal data into image mempool.
2614
2615 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
2616
2617         * class.c (mono_class_inflate_generic_type_with_mempool):
2618         This function allows to inflate a generic type using
2619         a mempool.
2620
2621         * class.c (inflate_generic_type): Take a mempool as argument
2622         and use it to do type dup'ing.
2623
2624         * class.c (mono_class_setup_fields): Field type for generic
2625         generic classes are allocated from the image mempool.
2626
2627         * metadata.c (free_generic_class): Inflated field type is
2628         now allocated in the image mempool.
2629
2630 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
2631
2632         * threads.c (thread_cleanup): Free MonoThread::name.
2633
2634 2008-06-12  Marek Habersack  <mhabersack@novell.com>
2635
2636         * appdomain.c (ensure_directory_exists): avoid unnecessary
2637         mkdir(2) calls when the shadow directory already exists.
2638         (mono_make_shadow_copy): copy also satellite assemblies from the
2639         private bin directories.
2640
2641 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
2644         
2645         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
2646         a page boundary. Fixes #396219.
2647
2648 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2649
2650         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
2651         due to double-checked locking.
2652
2653 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2654
2655         * assembly.c (build_assembly_name): Release memory on failure.
2656
2657         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
2658
2659 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2660
2661         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
2662         memory on failure.
2663
2664 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2665
2666         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
2667         memory on failure.
2668
2669 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2670
2671         * loader.c (field_from_memberref): Check if field signature type is equal
2672         to the non-inflated type of the field. Fixes #398980.
2673
2674 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
2675
2676         * assembly.c (mono_assembly_load_from_full): Call 
2677         mono_assembly_load_friends () outside the assemblies lock, since it can
2678         acquire the loader lock. Fixes #323696.
2679
2680         * reflection.c (resolve_object): Inflate the inst with the context for
2681         FieldOnTypeBuilderInst. Fixes #399010.
2682
2683 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2684
2685         * reflection.c (mono_image_get_field_on_inst_token): Don't
2686         inflate the field to encode it's signature. If it's a
2687         VAR or MVAR it should stay that way in the signature.
2688         Fixes #399047.
2689
2690 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2691
2692         * reflection.c (resolve_object): Release memory of inflated types.
2693
2694 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2695
2696         * loader.c (mono_method_get_signature_full): Remove assert about
2697         loading a methodspec to a generic method. We have such methods, such as
2698         System.Threading.Interlocked::CompareExchange<T>.
2699         This assert was removed since it crashes the verifier when it checks
2700         methods calling CompareExchange<T>.
2701
2702 2008-06-10  Marek Safar  <marek.safar@gmail.com>
2703
2704         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
2705         of Type array and not MonoType.
2706
2707 2008-06-10  Marek Habersack  <mhabersack@novell.com>
2708
2709         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
2710         <lupus@ximian.com>
2711
2712 2008-06-10  Martin Baulig  <martin@ximian.com>
2713
2714         * debug-mono-symfile.h
2715         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
2716         changes to the file format, but we were generating incorrect
2717         source file indices in the line number table due to a bug, which
2718         made backtraces report an incorrect source file.
2719
2720 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2721
2722         * mono-debug.c: Moved mono_debug_free_method_jit_info from
2723         mini/debug-mini.c to here.
2724
2725         * mono-debug.c (il_offset_from_address): Free memory from find_method.
2726
2727         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
2728         use it to release structs returned by mono_debug_find_method.
2729
2730 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
2731
2732         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
2733         since it needs to set method->slot for all interface methods.
2734
2735 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2736
2737         * class-internals.h: Forgot to add.
2738
2739 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2740
2741         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
2742
2743         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
2744         Lookup the custom attributes from property_hash.
2745
2746         * reflection.c (mono_save_custom_attrs): Save the custom attributes
2747         in property_hash. Allocate all data using the image mempool.
2748
2749         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
2750         for dynamic_custom_attrs to checks if the image is dynamic.
2751
2752 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
2755         assemblies array.
2756         
2757         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
2758         runtime functions while holding the domain assemblies lock.
2759
2760 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2761
2762         * verify.c: Reapplied the last bit of the reverted changes.
2763
2764 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         * verify.c: Reapplied more of the reverted changes.
2767
2768 2008-06-09  Martin Baulig  <martin@ximian.com>
2769
2770         * debug-mono-symfile.c (load_symfile): Check the major version
2771         first; if it's wrong, don't print the minor version in the error message.
2772
2773 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
2774
2775         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
2776         lock instead of the domain lock to avoid deadlocks, since the thread might
2777         already hold the loader lock.
2778
2779         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
2780         (mono_thread_attach): Ditto.
2781
2782         * monitor.c: Use a TLS variable for holding the current thread id instead
2783         of calling pthread_self ().
2784         (mono_monitor_init_tls): New internal function to initialize the TLS
2785         variable.
2786         (mono_monitor_try_enter_internal): Put the owner == id check after the
2787         owner == 0 check.
2788
2789         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
2790         missed optimizations when using gcc-4.3.
2791
2792 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
2793
2794         * reflection.c (mono_dynamic_image_free): Free the memory
2795         used by MonoGenericParam in MonoDynamicImage::gen_param.
2796
2797         * reflection.c (mono_reflection_setup_generic_class): Allocate
2798         container from mempool.
2799
2800         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
2801         container from mempool.
2802
2803 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * threads.c (mono_set_pending_exception): New internal function to set the
2806         pending exception of the current thread.
2807         (mono_thread_get_and_clear_pending_exception): Check for 
2808         thread->pending_exception as well.
2809
2810         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
2811
2812         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
2813         it can trigger a collection.
2814
2815 2008-06-06  Martin Baulig  <martin@ximian.com>
2816
2817         Merged the `debugger-kahalo' branch.
2818
2819         * mono-debug.h
2820         (MONO_DEBUGGER_VERSION): Bumped to 72.
2821
2822         * debug-mono-symfile.h
2823         (MonoSymbolFileMethodIndexEntry): Removed.
2824         (MonoSymbolFileMethodEntry): New public typedef.
2825         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
2826         (MonoSymbolFileSourceEntry): Remove everything except `index' and
2827         `data_offset'.
2828         (MonoSymbolFileMethodEntry): Removed.
2829         (MonoSymbolFileLexicalBlockEntry): Removed.
2830         (MonoSymbolFileLineNumberEntry): Removed.
2831         (MonoDebugLexicalBlockEntry): Removed.
2832         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
2833         removed `num_il_offsets' and `il_offsets'.
2834         (MonoSymbolFile): Replace `version' with `major_version' and
2835         `minor_version'.
2836         (MONO_SYMBOL_FILE_VERSION): Replace with
2837         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
2838         `MONO_SYMBOL_FILE_MINOR_VERSION'.
2839
2840         * debug-mono-symfile.c
2841         (mono_debug_symfile_lookup_location): Add support for the new line
2842         number table format.
2843
2844 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2845
2846         * metadata.c (free_generic_class): Release the inflated
2847         MonoClass of dynamic generic classes if it's not a generic
2848         type definition.
2849
2850 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2851
2852         * verify.c: Reapplied more of the reverted changes.
2853
2854 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2855
2856         * reflection.c (lookup_custom_attr): Clean the cached flag or
2857         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
2858         for SRE types.
2859
2860 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
2861
2862         * verify.c: Reapplied a small part of the reverted changes.
2863
2864 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2867
2868         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
2869         previously in managed code.
2870         (mono_monitor_exit): Ditto.
2871         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
2872
2873         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
2874         the managed definition.
2875
2876 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
2877
2878         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
2879
2880 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
2883         
2884         * monitor.c: Add some micro optimizations.
2885
2886         * icall.c (type_from_typename): Handle 'bool'.
2887
2888 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
2889
2890         * verify.c: Implement constructor verification per P III 1.8.1.4.
2891         Fixes #396716.
2892
2893 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
2896         holding the assemblies lock here too.
2897
2898 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2899
2900         * verify.c: Kill stack_top function.
2901
2902 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2903
2904         * verify.c: Kill stack_get function.
2905
2906 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2907
2908         * verify.c (mono_method_verify): Last change broke the build. Fixed.
2909
2910 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2911
2912         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
2913         more reliable.
2914
2915         * verify.c (mono_method_verify): Inflate params and locals to avoid
2916         mismatch when checking for compatibility.
2917
2918 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
2919
2920         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
2921         Length prefix should be size in bytes. Fix bug #339530.
2922         
2923         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
2924         Length prefix should be size in bytes. Fix bug #339530.
2925
2926         Code is contributed under MIT/X11 license.
2927
2928 2008-06-05  Bill Holmes <billholmes54@gmail.com>
2929
2930         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
2931
2932         Contributed under MIT/X11 license.
2933
2934 2008-06-05  Martin Baulig  <martin@ximian.com>
2935
2936         * mono-debug-debugger.c
2937         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
2938
2939 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
2942         while holding the assemblies lock to prevent deadlocks. Handle the case
2943         where the search hook returns NULL but the assembly was still loaded.
2944         Fixes #323696.
2945
2946         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
2947         modify domain state.
2948
2949 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
2950
2951         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
2952         * Makefile.am (pedump_LDADD): Post-process object files and
2953         add dtrace-generated object file, if necessary.
2954
2955         Code is contributed under MIT/X11 license.
2956
2957 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
2960
2961 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2962
2963         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
2964
2965 2008-06-04  Mark Probst  <mark.probst@gmail.com>
2966
2967         * threads.c: Try to free everything from the delayed free table
2968         when shutting down threads, and set the variable to NULL after the
2969         table is freed so that calling
2970         mono_thread_hazardous_try_free_all() when shutting down the root
2971         domain doesn't crash.
2972
2973 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2974
2975         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
2976         the caller if resulting type was inflated.
2977
2978         * class.c (mono_class_create_from_typespec): Free the MonoType if it
2979         was inflated.
2980
2981         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
2982
2983
2984 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
2985
2986         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
2987         class library tests.
2988
2989         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
2990         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
2991         #396989.
2992
2993 2008-06-04  Mark Probst  <mark.probst@gmail.com>
2994
2995         * domain.c, domain-internals.h: The JIT infos are now freed by the
2996         JIT info table code.  They are freed immediately if there only a
2997         single JIT info table in circulation.  If there is more, the free
2998         is delayed via a queue.
2999
3000         * threads.c, threads-types.h: New hazard pointer function for
3001         freeing all freeable delayed items in one sitting.
3002
3003 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3004
3005         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
3006
3007         * reflection.c (typebuilder_setup_properties): Same.
3008
3009         * reflection.c (typebuilder_setup_events): Same.
3010
3011 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3012
3013         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
3014         and use it for allocating memory.
3015
3016         * reflection.c (mono_marshal_spec_from_builder): Same.
3017
3018         * reflection.c: Change code to use new signatures.
3019
3020         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
3021
3022 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * decimal.c (rescale128): Put back one line which was accidently commented
3025         out.
3026         
3027         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
3028         to cause crashes.
3029
3030 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3031
3032         * reflection.c (mono_reflection_generic_class_initialize): Name must
3033         be always malloc'ed so we can free it later on. Do this for field, property
3034         and event.
3035
3036         * metadata.c (free_generic_class): Free field, property and event names.
3037
3038 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3039
3040         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
3041         instead of g_memdup.
3042
3043         * reflection.c (typebuilder_setup_fields): Same.
3044
3045 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3046
3047         * decimal.c (rescale128): Optimize this function a bit more.
3048
3049 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3050
3051         * metadata.c (free_generic_class): Release some memory from
3052         SRE generic classes.
3053
3054 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3055
3056         * reflection.c (mono_image_get_generic_field_token): No reference
3057         to name is kept, free it.
3058
3059         * reflection.c (mono_reflection_generic_class_initialize): Free
3060         more memory of the inflated field.
3061
3062 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
3065         code.
3066
3067 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
3068
3069         * reflection.c (mono_dynamic_image_free): Release memory used by
3070         MonoDynamicImage::array_methods elements.
3071
3072         * reflection.c (assembly_add_win32_resources): Release memory after
3073         encoding.
3074
3075 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * decimal.c (log2_32): Use an optimized version for this function too.
3078         
3079         * decimal.c (log2_64): Fix this on 32 bit machines.
3080
3081 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
3082
3083         * class.c (mono_dup_array_type): Implement allocation using a mempool.
3084
3085         * class.c (mono_metadata_signature_deep_dup): Same.
3086
3087         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
3088         a mempool.
3089
3090         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
3091
3092         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
3093
3094         * metadata-internals.h: Added mono_metadata_signature_dup_full.
3095
3096         * class-internals.h: Update signatures to take a MonoMemPool.
3097
3098 2008-06-02  Dick Porter  <dick@ximian.com>
3099
3100         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
3101         * icall-def.h: Add
3102         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
3103         FormatMessage API to get the error text.  Fixes bug 321827.
3104
3105 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
3106
3107         * decimal.c: Add some micro optimizations to make decimal operations faster.
3108
3109 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3110
3111         * reflection.c (method_encode_clauses): Take a mempool
3112         as parameter and use it to allocate the clause array.
3113
3114         * reflection.c (mono_image_get_field_on_inst_token): Free
3115         the inflated type after encoding it.
3116
3117         * reflection.c (mono_dynamic_image_free): Free each element
3118         of MonoDynamicImage::gen_params.
3119
3120         * reflection.c (reflection_methodbuilder_to_mono_method):
3121         Allocate the generic param array from the mempool.
3122         Allocate signature params from the mempool.
3123
3124         * reflection.c (mono_reflection_generic_class_initialize):
3125         Free inflated fields after been used.
3126
3127 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
3128
3129         * icall.c: Reapply the memory leak fixes as they no
3130         longer make mono crash.
3131
3132 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
3133
3134         * reflection.c (mono_type_get_object): Don't store the suplied
3135         MonoType with type_hash. A caller which pass a type that
3136         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
3137         might end with a pointer to freed memory.
3138         The solution is to use byval_arg or this_arg from the associated
3139         MonoClass of the supplied type.
3140
3141 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * icall.c: Revert the rest of the last change as it breaks the build too.
3144
3145 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3146
3147         * icall.c: Revert a leak fix as it's breaking the build.
3148
3149 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3150
3151         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
3152
3153 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3154
3155         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
3156
3157 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3158
3159         * icall.c: Fix some memory leaks.
3160
3161 2008-05-29  Dick Porter  <dick@ximian.com>
3162
3163         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
3164         async socket operations from the pending list when a socket
3165         closes.  Leaving it until the threadpool services the event
3166         exposes a race condition when a socket descriptor is reused.
3167         Fixes bug 377589.
3168
3169 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3170
3171         * object.c: Fix negative index check for array alocation.
3172
3173 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3174
3175         * icall.c, marshal.c: Delegate wrappers should skip visibility.
3176         This check is performed by the verifier for IL created delegates
3177         and by Delegate::CreateDelegate for programatically created ones.
3178         Fixes #372406.
3179
3180 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3181
3182         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
3183         Fix code to use mono_array_size_t instead of int.
3184
3185         Based on patch by Luis F. Ortiz.
3186         Contributed under X11 license.
3187         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3188
3189 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3190
3191         * icall.c: Added ves_icall_System_Array_GetLongLength and
3192         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
3193         arrays.
3194
3195         * icall.h: Export both new functions.
3196
3197         Based on patch by Luis F. Ortiz.
3198         Contributed under X11 license.
3199         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3200
3201 2008-05-28  Martin Baulig  <martin@ximian.com>
3202
3203         The debugger now requires exactly r103463.
3204
3205         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
3206         This version is not supported by the debugger, wait for 72.
3207
3208 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3209
3210         * object.h: Changed array related functions to use
3211         mono_array_size_t instead of guint32. Forgot to commit this file.
3212
3213         Patch by Luis F. Ortiz.
3214         Contributed under X11 license.
3215         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3216
3217
3218 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3219
3220         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
3221         don't define it. Use the number literal instead.
3222
3223 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
3224
3225         * icall.c: Changed array related functions to use
3226         mono_array_size_t instead of guint32.
3227
3228         * icall.c (ves_icall_System_Array_GetLength): Check for length
3229         overflow under MONO_BIG_ARRAYS.
3230
3231         Based on patch by Luis F. Ortiz.
3232         Contributed under X11 license.
3233         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3234
3235 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
3236
3237         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
3238
3239         Based on patch by Luis F. Ortiz.
3240         Contributed under X11 license.
3241         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3242
3243 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
3244
3245         * object.c, object.h: Changed array related functions to use
3246         mono_array_size_t instead of guint32.
3247
3248         Patch by Luis F. Ortiz.
3249         Contributed under X11 license.
3250         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3251
3252 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
3253
3254         * object.h: Introduced mono_array_size_t typedef. This must be used
3255         in all places an array length is expected. This is 64bits wide if
3256         MONO_BIG_ARRAYS is enabled.
3257
3258         Patch by Luis F. Ortiz.
3259         Contributed under X11 license.
3260         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
3261
3262 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * security-manager.c class.c: Set the class exception info by calling
3265         mono_class_set_failure ().
3266
3267         * class.c (mono_class_get_exception_data): New accessor function.
3268         (mono_class_set_failure): Store exception_data in the property hash.
3269
3270         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
3271         the struct as a property.
3272
3273         * loader.c (mono_get_method_full): Store the lookup result for method
3274         tokens in method_cache, the others in methodref_cache to decrease the memory
3275         usage of hash tables.
3276
3277         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
3278         (mono_image_init): method_cache is lazy inited now.
3279
3280         * metadata-internals.h (struct _MonoImage): Change method_cache to
3281         a MonoValueHashTable, add a separate methodref_cache.
3282
3283 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
3284
3285         * number-formatter.h: Fix tables to avoid arithemtic overflow in
3286           Double.ToString as exposed by Bug #383531.
3287
3288 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * number-formatter.h: Make some tables static.
3291
3292         * class.c (mono_method_set_generic_container): New accessor function.
3293         (mono_method_get_generic_container): Ditto.
3294
3295         * class-internals.h (struct _MonoMethod): Remove rarely used 
3296         'generic_container' field, store it in the property hash instead. Add 
3297         'is_generic' boolean field instead.
3298
3299         * image.c (mono_image_init): Initialize property_hash.
3300         (mono_image_close): Destroy property_hash.
3301
3302         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
3303         hold rarely used fields of runtime structures belonging to this image.
3304
3305         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
3306         to get/set method->generic_container.
3307
3308         * loader.c (mono_get_method_from_token): Avoid loading the method header for
3309         generic methods.
3310
3311 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
3312
3313         * class.c (mono_class_inflate_generic_method_full): Don't increase
3314         mono_stats.inflated_method_count for methods found in the cache.
3315
3316         * threads.c (mono_thread_request_interruption): Add a comment about 
3317         QueueUserAPC ().
3318
3319 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
3322         interface_offsets_packed table.
3323         
3324         * class.c (mono_class_init): Remove some dead code.
3325
3326         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
3327         mono_class_setup_vtable () when CAS is active to detect security problems.
3328
3329 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
3330
3331         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
3332
3333         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
3334         parameters as it's irrelevant for delegate checking.
3335
3336 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
3339
3340         * class.c (mono_class_init): Control the creation of a generic vtable using
3341         a global which is true by default, but set to false by the runtime startup code.
3342         
3343         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
3344         Disabled for now since it breaks the embedding API.
3345         Move the setup of class->methods for arrays to mono_class_setup_methods ().
3346         (mono_class_setup_methods): Add a memory barrier.
3347
3348         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
3349         when mono_class_init () doesn't compute the generic vtable.
3350         
3351 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
3352         * profiler.c: Added mono_profiler_install_statistical_call_chain,
3353         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
3354         to support call chains (backtrace) in the stat profiler.
3355         * profiler.c, profiler-private.h: Likewise.
3356
3357 2008-05-22  Mark Probst  <mark.probst@gmail.com>
3358
3359         * generic-sharing.c: Init generic class when a method of it is
3360         requested via a runtime generic context.
3361
3362 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
3363
3364         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
3365
3366         * reflection.c (mono_type_get_object): Add a FIXME.
3367
3368         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
3369
3370         * class.c (mono_class_get_method_by_index): New helper function, returning an
3371         entry in the class->methods array.
3372
3373 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * class.c (mono_class_init): Only do the array optimization for szarrays. 
3376         Avoid creating a generic vtable for generic instances as well.
3377         (mono_class_get_method_from_name_flags): Don't search in the metadata for
3378         generic instances.
3379
3380 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3381
3382         * loader.c (mono_get_method_constrained): Inflate the signature
3383         with class context. Fix #325283.
3384
3385 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * object.c (mono_class_create_runtime_vtable): Add a comment.
3388
3389         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
3390         where needed.
3391         (setup_interface_offsets): Handle the case when this is called twice for arrays.
3392         (mono_class_setup_vtable_general): Add an assert.
3393         (mono_class_init): Avoid creating a generic vtable for arrays.
3394
3395         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
3396         here, let mono_class_init () do that.
3397
3398         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
3399         interfaces in mscorlib.
3400
3401         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
3402         interfaces. Add some comments.
3403         (mono_class_init): Call mono_class_setup_methods () here since it is no
3404         longer called by mono_class_setup_vtable ().
3405
3406         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
3407         not set in class->vtable.
3408         (mono_class_create_runtime_vtable): Reenable the disabled code.
3409
3410         * object.c (mono_class_create_runtime_vtable): Disable the last change for
3411         now as it causes some test failures.
3412
3413         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
3414         if using the vtable trampoline. Also remove some strange code which put the
3415         generic methods themselves into the vtable slots. Remove the AOT init_vtable
3416         stuff as it is no longer needed.
3417
3418 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
3419
3420         * pedump.c: Give make --verify all option check code as well.
3421         Using --verify code won't check for metadata now.
3422
3423 2008-05-19  Martin Baulig  <martin@ximian.com>
3424
3425         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
3426
3427         * mono-debug.c
3428         (_mono_debug_using_mono_debugger): New global variable; it's set
3429         directly by the debugger, so mono_debug_using_mono_debugger() also
3430         works after attaching.
3431
3432 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
3433
3434         * object.c (mono_class_create_runtime_vtable): Use memory barriers
3435         as we do double checked locking on MonoClass::runtime_info and
3436         MonoClassRuntimeInfo::domain_vtables.
3437
3438 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
3439
3440         * debug-helpers.c (print_field_value): Fix a warning.
3441
3442 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
3445         set in the AOT case.
3446
3447 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
3448
3449         * class.c (mono_class_setup_vtable_general): Use memory barriers
3450         as we do double checked locking on MonoClass::vtable.
3451
3452 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
3453
3454         * reflection.c (resolve_object): Inflate only if the generic context
3455         is not null. Fixes #389886.
3456
3457 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
3458
3459         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
3460         instead of g_free.
3461
3462         Code is contributed under MIT/X11 license.
3463
3464 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
3465
3466         * class.c: Revert unrelated change.
3467
3468 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
3469
3470         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
3471         a generic instantiation, use mono_class_from_mono_type instead of playing
3472         with MonoType directly.
3473
3474 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
3475
3476         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
3477         checks must ignore generic instantiations, so mono_class_has_parent is not
3478         suitable. Fixes #390128.
3479
3480 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
3481
3482         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
3483         it to avoid registering tokens during metadata generation. Fixes #390023.
3484
3485 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
3486
3487         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
3488         consistent.
3489
3490         Contributed under MIT/X11 license.
3491
3492 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
3493
3494         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
3495         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
3496         to fixup the EXE image.
3497         (mono_cleanup): Use mono_close_exe_image.
3498         (mono_close_exe_image): New function.
3499         * image.c: Include "marshal.h".
3500         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
3501         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
3502         counting when the image is loaded outside of mono_image_open_full. Set status
3503         based on GetLastError.
3504         * coree.c: Include required headers. Add init_from_coree.
3505         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
3506         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
3507         (_CorExeMain): Set init_from_coree.
3508         (CorExitProcess): Only call ExitProcess for now.
3509         (CorBindToRuntimeEx): New stub implementation.
3510         (CorBindToRuntime): New function.
3511         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
3512         (MonoFixupExe): ILONLY executables require no fixups.
3513         (mono_set_act_ctx): New function to set activation context.
3514         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
3515         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
3516         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
3517         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
3518         as MONO_INTERNAL.
3519         * domain-internals.h: Add mono_close_exe_image.
3520
3521         Contributed under MIT/X11 license.
3522
3523 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
3524
3525         * metadata.c (mono_metadata_compute_size): Correctly calculate field
3526         size for generic param and event tables. Fixes #388977.
3527
3528 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
3529
3530         * loader.c (mono_method_signature): Use memory barriers because of the double
3531         checked locking pattern.
3532
3533         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
3534         aborting or aborted as well. Fixes #376391.
3535         
3536         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
3537         existing runtime state in the Suspend handler during shutdown.
3538
3539 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
3540
3541         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
3542
3543         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
3544         which are starting up or shutting down.
3545
3546         * threads.c (mono_threads_set_shutting_down): Don't return a value since
3547         this function never returns if the runtime is already shutting down.
3548
3549         * icall.c (ves_icall_System_Environment_Exit): Update after 
3550         mono_threads_set_shutting_down () signature change.
3551         
3552 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
3553
3554         * class.c: Added can_access_instantiation to verify if the instantiation
3555         is visible. Fix access check for nested types as they returned TRUE
3556         before doing type and generic instantiation visibility checks.
3557
3558 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
3559
3560         * reflection.c (mono_reflection_create_generic_class): The created type
3561         must have a different container from its TypeBuilder. Otherwise they
3562         will end sharing generic arguments, which is wrong.
3563
3564         Due to the sharing, making a generic instance of the created type using
3565         the TypeBuider generic arguments resulted in the generic type definition
3566         been returned, which is wrong as well.
3567
3568         As a bonus the code was leaking the type_params array. This memory should
3569         be allocated from the image mempool.
3570
3571         This fixes bug #354047.
3572
3573 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
3574
3575         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
3576         to here         as they are now used in assembly.c new code.
3577         Added a skipverification flag to MonoAssembly.
3578         New internal function mono_assembly_has_skip_verification.
3579
3580         * assembly.c: New function mono_assembly_has_skip_verification. It checks
3581         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
3582         part of #387274.
3583
3584 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
3585
3586         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
3587         needed. Fixes #387034.
3588
3589         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
3590
3591 2008-05-06  Miguel de Icaza  <miguel@novell.com>
3592
3593         * assembly.c (mono_assembly_load_reference): Prevent crash while
3594         disassembling Silverlight 2.0 executables while we still do not
3595         have GACed libraries.
3596
3597 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * reflection.c: Special case generic type definitions as well. Fixes #383444.
3600
3601 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
3602
3603         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
3604         of the dynamic case. Fixes #387404.
3605
3606 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
3607
3608         *verify.c (mono_verifier_is_class_full_trust): If under
3609         verify_all and the verifier mode was not set, only
3610         gac and corlib types are fulltrust. This makes --verify-all
3611         usable to detect unverifiable code, which is the expected
3612         use case.
3613
3614 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
3615
3616         * verify.h: Ops, commited the header with debug
3617         enabled.
3618
3619 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
3620
3621         * verify.c (merge_stack): Use the new value on unverifiable
3622         stack merges.
3623
3624         * verify.c (verify_type_compatibility_full): Comparison
3625         of nullable types can't use mono_class_is_assignable_from.
3626
3627         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
3628         that makes all verification errors be reported.
3629
3630         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
3631         mono_method_verify.
3632
3633 2008-05-05  Robert Jordan  <robertj@gmx.net>
3634
3635         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
3636         support for value types. See #386415.
3637
3638         * object.c: comments.
3639
3640         Code is contributed under MIT/X11 license.
3641
3642 2008-05-05  Martin Baulig  <martin@ximian.com>
3643
3644         * debug-mono-symfile.h
3645         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
3646         for old pre-terrania symbol files.
3647
3648 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
3649
3650         * mono-config.c: Add ppc64 architecture.
3651
3652         Code is contributed under MIT/X11 license.
3653
3654 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
3655
3656         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
3657           PPC64 uses function descriptors as well.
3658
3659         Code is contributed under MIT/X11 license.
3660
3661 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * object.c (compute_class_bitmap): Ignore literal static fields.
3664
3665         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
3666         var has an invalid format.
3667         (describe_ptr): Add some sanity checks for the vtable.
3668         (add_nursery_frag): Clear unused nursery fragments.
3669         (major_collection): Clear all remaining nursery fragments.
3670
3671 2008-05-03  Robert Jordan  <robertj@gmx.net>
3672
3673         * image.c, metadata-internals.h: add thunk_invoke_cache.
3674
3675         * marshal.c, marshal.h: implement
3676         mono_marshal_get_thunk_invoke_wrapper ().
3677
3678         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
3679
3680         Code is contributed under MIT/X11 license.
3681
3682 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
3683
3684         * verify.c (do_leave): Empty the stack.
3685
3686 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
3687
3688         * class.c (mono_class_is_assignable_from): Variance
3689         doesn't work between reference and value types. For example,
3690         given type C<T+>, C<int32> is not assignable to C<object>.
3691         Break the argument checking loop on first error. 
3692
3693 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
3694
3695         * icall.c : base64_to_byte_array() needs some more strict
3696           check for sequence of '=' characters. Patch by Santa
3697           Marta (http://deee.g.hatena.ne.jp/santamarta).
3698
3699           Contributed under MIT/X11 license.
3700           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
3701
3702 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
3703
3704         * domain.c: Disable LoadLibrary support to fix Win32 build.
3705
3706         Code is contributed under MIT/X11 license.
3707
3708 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
3711         to help with cache behaviour.
3712
3713 2008-05-01  Miguel de Icaza  <miguel@novell.com>
3714
3715         * appdomain.c (mono_domain_from_appdomain): Add new accessor
3716         method. 
3717
3718 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
3721
3722 2008-05-01  Dick Porter  <dick@ximian.com>
3723
3724         * process.c (process_get_fileversion): Only pass 16 bits of
3725         language ID to VerLanguageName.  Fixes bug 381204.
3726
3727 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
3728
3729         * verify.c (mono_method_verify): Fix the comparison
3730         operator for code bounds check.
3731
3732 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
3733
3734         * verify.c (mono_method_verify): Check the bounds of
3735         all access of the code array.
3736
3737 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
3738
3739         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
3740
3741 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * image.c (mono_image_strong_name_position): Fix return value when the rva is
3744         not valid.
3745
3746 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
3747
3748         * loader.c (mono_get_method_from_token, mono_method_signature): Add
3749         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
3750         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
3751         fixup main EXE images when using mono.exe for mixed-mode assembly support.
3752         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
3753         mono_runtime_load.
3754         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
3755         runtime initialization from metadata.
3756         * assembly.c: Remove obsolete ceGetModuleFileNameA.
3757         (mono_set_rootdir): Use mono_get_module_file_name.
3758         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
3759         handles.
3760         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
3761         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
3762         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
3763         MonoCLIImageInfo. Add support for module handles.
3764         (load_cli_header): Update mono_cli_rva_image_map signature.
3765         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
3766         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
3767         (mono_image_rva_map): Add support for module handles.
3768         (mono_image_ensure_section_idx): Add support for module handles.
3769         (mono_image_close): Add support for module handles.
3770         (do_load_header): Add support for module handles.
3771         (mono_image_open_from_module_handle): New function for internal use.
3772         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
3773         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
3774         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
3775         handles.
3776         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
3777         * image.h: Add mono_image_fixup_vtable.
3778         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
3779         support.
3780         * coree.h: New file.
3781         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
3782         unsupported native code.
3783         (mono_marshal_set_callconv_from_modopt): New function splitted from
3784         mono_marshal_get_managed_wrapper.
3785         (mono_marshal_get_managed_wrapper): Use
3786         mono_marshal_set_callconv_from_modopt.
3787         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
3788         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
3789         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
3790         that results in a deadlock when the runtime is loaded in _CorDllMain.
3791         * Makefile.am: Add coree.c and coree.h.
3792
3793         Contributed under MIT/X11 license.
3794
3795 2008-04-28  Mark Probst  <mark.probst@gmail.com>
3796
3797         * generic-sharing.c: Search for type arguments in array element
3798         types as well.
3799
3800 2008-04-28  Mark Probst  <mark.probst@gmail.com>
3801
3802         * class-internals.h, generic-sharing.c: New, small runtime generic context.
3803
3804         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
3805
3806         * object.c: Don't setup the RGCTX when the vtable is created,
3807         because we're setting it up lazily now.
3808
3809 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
3812         64 bit support.
3813
3814 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
3815
3816         * verify.c (verify_class_for_overlapping_reference_fields): 
3817         If class is under fulltrust allow reference types to overllap
3818         if they have the same RVA.
3819
3820 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
3821
3822         * pedump.c: Added new flag valid-only, that makes the verifier
3823         behaves just like --security=validil. It won't fail type load
3824         due to unverifiable restrictions.
3825
3826 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
3827
3828         * class-internals.h (struct MonoMethod): Added a verification_success
3829         field to cache verifier executions. Reduced MonoMethod:slot size by
3830         one bit.
3831
3832 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
3835         instead of a 'vt' argument to save an indirection and to allow these to be used
3836         for valuetypes.
3837         (scan_vtype): New helper function to scan an area using a gc descriptor.
3838         (mono_gc_wbarrier_value_copy): Implement this.
3839         (handle_remset): Add support for REMSET_VTYPE.
3840         (find_in_remset_loc): Ditto.
3841         (mono_gc_base_init): Allow some debugging options to be controlled through the
3842         use of the MONO_GC_DEBUG env variable.
3843         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
3844         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
3845
3846 2008-04-23  Martin Baulig  <martin@ximian.com>
3847
3848         * domain.c (mono_domain_create): Move the call to
3849         mono_debug_domain_create() down, after allocating the domain id.
3850
3851 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
3852
3853         verify.c (verify_class_for_overlapping_reference_fields): Skip
3854         static fields while verifying for overlapping fields as they
3855         don't matter at all.
3856
3857 2008-04-23  Marek Habersack  <mhabersack@novell.com>
3858
3859         * domain-internals.h: added a declaration of
3860         mono_make_shadow_copy.
3861
3862         * assembly.c (mono_assembly_open_full): shadow copying of
3863         assemblies moved to here, so that all the assemblies within the
3864         application domain's private binary directories can be
3865         processed. Fixes bug #380546
3866
3867         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
3868         mono_make_shadow_copy and made non-static. The decision whether
3869         to shadow-copy an assembly is made based on its location - it's
3870         copied if it's in one of the private application domain binary
3871         directories and its different to the target file in the shadow
3872         directory. Fixes bug #380546
3873
3874 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
3875
3876         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
3877
3878         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
3879         types.
3880
3881         * reflection.c (mono_image_create_token): Handle 
3882         Method/ConstructorOnTypeBuilderInst.
3883         (resolve_object): Ditto.
3884         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
3885         so it can be called from resolve_object. Also handle the case when the inflated
3886         class already has its methods setup.
3887
3888 2008-04-21  Martin Baulig  <martin@ximian.com>
3889
3890         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
3891
3892 2008-04-20  Geoff Norton  <gnorton@novell.com>
3893
3894         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
3895         pointer dereference.
3896
3897 2008-04-15  Marek Habersack  <mhabersack@novell.com>
3898
3899         * appdomain.c (try_load_from): if IOMAP is in effect, call the
3900         portability API to look up the assembly file. Fixes behavior in
3901         situations when the application has a bin/ directory, but the
3902         assembly search patch refers to Bin/ (and thus the requested file
3903         name is Bin/SomeLibrary.dll). Fixes bug #379888
3904
3905 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3906
3907         verify.c (mono_type_is_generic_argument): Extracted this check
3908         from a dozen places to here.
3909
3910         verify.c: Fixed all issues related to boxing generic arguments
3911         and their constraints.
3912
3913 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
3914
3915         verify.c (mono_class_interface_implements_interface): Fix win32 build.
3916
3917 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
3918
3919         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
3920         isn't finished yet. Fixes #363447.
3921
3922 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
3923
3924         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
3925         Fixes #346419.
3926
3927 2008-04-13  Jb Evain  <jbevain@novell.com>
3928
3929         * domain.c: update the 2.1 profile versions.
3930         Merged from the Moonlight 2 branch.
3931
3932 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
3935         mscorlibs for the non-refonly case as well.
3936
3937         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
3938         in mono_assembly_load_from_full (). Fixes #378924.
3939
3940 2008-04-11  Geoff Norton  <gnorton@novell.com>
3941
3942         * icall.c: The global extern environ doesn't exist on Mac.  We
3943         need to call NSGetEnviron instead.
3944
3945 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3946
3947         verify.c: Add generic method constraint verification.
3948
3949 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3950
3951         class.c (mono_class_inflate_generic_method_full): Add a long
3952         explanation to the is_mb_open hack. Remove the FIXME.
3953
3954 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3955
3956         * verify.c (mono_method_verify): Mark all unknown opcodes
3957         as invalid. Mark jmp as unverifiable.
3958
3959 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3960
3961         * verify.c: Add code to do type constraint verification on class instances.
3962
3963         * verify.c (mono_verifier_verify_class): Use the type constraint 
3964         verification code.
3965
3966 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
3967
3968         * class.c (mono_class_get_field_default_value): Don't pass cindex
3969         as hint to mono_metadata_get_constant_index. The local is not initialized
3970         and should contain garbage most of the time. This could only work
3971         with a lot of luck.
3972
3973 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
3974
3975         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
3976
3977 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
3978
3979         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
3980
3981         * class.c (mono_class_from_generic_parameter): Save the token of the
3982         generic param in MonoClass::sizes.generic_param_token.
3983
3984         * reflection.c (mono_custom_attrs_from_class): If the class type is
3985         VAR or MVAR retrieve the attributes of the generic param.
3986
3987 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3988
3989         * class.c (mono_class_init): Do class verification if the verifier
3990         is enabled.
3991
3992 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3993
3994         * verify-internal.h: Added mono_verifier_verify_class.
3995
3996         * verify.c: Added mono_verifier_verify_class. It checks for
3997         classes with explicit layout that have overlapping reference fields.
3998
3999         * pedump.c: Init the verifier state prior to verification. Fixed
4000         command line arguments.
4001
4002 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
4003
4004         * Makefile.am: Added verify-internals.h, hopefully fix the build.
4005
4006 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4007
4008         * verify-internals.h: Fix a warning.
4009
4010 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
4011
4012         * verify-internals.h: New header with the verifier configuration
4013         extracted from mini.c.
4014
4015         * verify.c: Implemented the new functions exported by verify-internals.h.
4016
4017 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
4018
4019         * verify.c: Add proper verification of ckfinite.
4020
4021 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
4022
4023         * verify.c (do_conversion): Improved error message to something
4024         more meanfull.
4025
4026         * verify.c (check_is_valid_type_for_field_ops): Fix to work
4027         with primitive types.
4028
4029 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
4030
4031         * verify.c: Added tail prefix checking. Marked icall
4032         as unverifible.
4033
4034 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
4035
4036         * verify.c: Fix the detection of branches to the middle
4037         of an instruction.
4038
4039 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
4040
4041         * verify.c: Implemented verification of volatile. and
4042         unaligned. prefix. Check if a type is valid after retrieving it.
4043
4044 2008-04-01  Dick Porter  <dick@ximian.com>
4045
4046         * process.c (process_get_fileversion): If there's no string block,
4047         set the file language to en_US.  Fixes the other new part of bug
4048         374600.
4049
4050 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
4051
4052         * class.c: New functions mono_method_can_access_field_full and
4053         mono_method_can_access_method_full. They perform type visibility
4054         and type site check.
4055
4056         * class-internal.h: Added exported functions.
4057
4058         * verify.c: Use new functions to implement proper visibility checks.
4059
4060 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
4063
4064 2008-03-28  Dick Porter  <dick@ximian.com>
4065
4066         * process.c (process_get_fileversion): Use the first language ID
4067         we see, rather than insisting on an invariant language.  Fixes bug
4068         374600.
4069
4070 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
4073         the streams to fix reading of invalid memory later.
4074
4075         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
4076         to ease debugging.
4077
4078 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
4081         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
4082
4083 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
4084         * threads.h: Added MonoThreadManageCallback type and
4085         mono_thread_set_manage_callback prototype
4086         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
4087         (used to store the mono_thread_manage callback).
4088         * threads.c: Added mono_thread_set_manage_callback, and handle
4089         "MonoThread->manage_callback" in build_wait_tids.
4090
4091 2008-03-26  Dick Porter  <dick@ximian.com>
4092
4093         * process.c (process_get_fileversion): Set FileVersionInfo strings
4094         to Empty when the resource doesn't have the particular info.
4095         Fixes bug 355717.
4096
4097 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
4098
4099         * verify.c (mono_method_verify): Proper prefix validation.
4100
4101 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4102
4103         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
4104         itself in a separate argument instead of throwing them. Fixes #373448.
4105
4106         * appdomain.c: Bump corlib version.
4107
4108 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
4109
4110         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
4111
4112 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
4113
4114         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
4115         version macros.
4116
4117 2008-03-20  Mark Probst  <mark.probst@gmail.com>
4118
4119         * generic-sharing.c, class-internals.h: Code for putting
4120         reflection types into the runtime generic context.
4121
4122 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
4123
4124         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
4125         Fixes #340662. 
4126
4127
4128 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
4129
4130         * verify.c (VerifyContext): Added instruction prefix data to the struct.
4131
4132         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
4133
4134         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
4135
4136         * verify.c (do_cast): Let the result value keep the boxed status.
4137
4138         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
4139
4140 2008-03-17  Jb Evain  <jbevain@novell.com>
4141
4142         * reflection.c: when running on a 2.0 runtime, emit
4143         unconditionally the #~ header version as 2.0, and the
4144         CLI header version as 2.5, for symmetry's sake with csc.
4145
4146 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * class.c: Remove the unused cache_interface_offsets stuff.
4149
4150         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
4151         profiler.c: Fix warnings.
4152
4153 2008-03-16  Mark Probst  <mark.probst@gmail.com>
4154
4155         * generic-sharing.c, class-internals.h: Support for putting
4156         methods into the runtime generic context.
4157
4158 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * class.c (mono_class_setup_fields): Ignore calls made to this function for
4161         classes which are generic instances of not-yet finished typebuilders. Fixes
4162         #351172.
4163
4164         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
4165
4166 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
4169
4170         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
4171         field, replace it with a hash table in MonoDynamicImage.
4172
4173         * reflection.c (inflate_mono_method): Access the generic definition object from
4174         image->generic_def_objects instead of imethod->reflection_info.
4175
4176         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
4177
4178         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
4179         
4180         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
4181         function in reflection.c so it is easier to keep in sync with the dynamic image
4182         creation code.
4183
4184         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
4185         mono_image_close ().
4186
4187 2008-03-15  Mark Probst  <mark.probst@gmail.com>
4188
4189         * class.c (mono_class_generic_sharing_enabled): Disable generic
4190         sharing for all architectures except AMD64 and x86 to fix build.
4191
4192 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
4193
4194         * verify.c: Use the generic definition MonoGenericContext when available.
4195         Remove code for checking generics instance compatibility in favor of
4196         mono_class_is_assignable_from.
4197
4198 2008-03-14  Mark Probst  <mark.probst@gmail.com>
4199
4200         * marshal.c, marshal.h, metadata-internals.h, image.c,
4201         wrapper-types.h: New wrapper for invoking a shared static method
4202         without having to pass the runtime generic context argument.
4203
4204 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
4205
4206         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
4207
4208 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
4209
4210         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
4211         
4212         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
4213         create a token from a FieldOnTypeBuilderInst.
4214         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
4215         (resolve_object): Ditto.
4216
4217         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
4218         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
4219
4220 2008-03-14  Martin Baulig  <martin@ximian.com>
4221
4222         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
4223
4224         * debug-mono-symfile.h
4225         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
4226         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
4227
4228 2008-03-10  Martin Baulig  <martin@ximian.com>
4229
4230         * debug-mono-symfile.h
4231         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
4232         `lexical_block_table_offset'.
4233         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
4234         `lexical_blocks'.
4235         (MonoSymbolFile): Added `version'.
4236
4237         * mono-debug.h
4238         (MonoDebugLexicalBlockEntry): Removed.
4239         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
4240         `lexical_blocks'.
4241
4242         * mono-debug.c (mono_debug_add_method): Don't compute lexical
4243         blocks here; the debugger now does this internally.
4244
4245 2008-02-27  Martin Baulig  <martin@ximian.com>
4246
4247         * object.c (mono_runtime_exec_main): Call
4248         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
4249         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
4250
4251 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
4252
4253         * verify.c (verify_type_compatibility_full): Allow native int to be converted
4254         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
4255
4256 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
4257
4258         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
4259         ldftn with a virtual method.
4260
4261 2008-03-13  Geoff Norton  <gnorton@novell.com>
4262
4263         * decimal.c:  Only include memory.h if the platform has it.
4264
4265 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
4266
4267         * assembly.c, class.c, metadata-internals.h: make sure public key
4268         tokesns are compared in a case-insensitive way. Also, all
4269         the lookups in the GAC use a lowercase public key token
4270         (gaacutil already does the lowercasing on install). Fixes
4271         bug #369541.
4272
4273 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
4274
4275         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
4276         and return value.
4277
4278 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
4279
4280         * image.c: when someone loads a mscorlib from a file, return the
4281         currently loaded mscorlib (fixes bug #369253).
4282
4283 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
4284
4285         * class.c: handle types with no parents by forcing them to have
4286         System.Object as a parent and marking them as broken (this currently
4287         allows the first part of bug #369173 to work as well, likely because
4288         we don't check for typeload exceptions everywhere yet).
4289
4290 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
4291
4292         * class.c: more complete check that types belong to corlib
4293         (fixes second part of bug #369173).
4294
4295 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
4296
4297         * generic-sharing.c:  Including glib.h for the MSVC builds to define
4298           "inline" to "__inline" before including mono-membar.h.
4299           
4300         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
4301           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
4302           MSVC builds.
4303
4304         Contributed under MIT/X11 license.
4305
4306 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
4307
4308         * verify.c (do_invoke_method): Remove return type validation.
4309
4310         * verify.c (do_ret): Do return type validation at return site instead of
4311         call site.
4312
4313 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
4314
4315         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
4316
4317         * verify.c: Some todos cleaned and improved a few error messages.
4318
4319 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
4320
4321         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
4322
4323 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
4324
4325         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
4326         system types correctly.
4327
4328         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
4329         function.
4330
4331 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
4332
4333         * assembly.c (build_assembly_name): Fix a warning.
4334
4335 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4336
4337         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
4338         the called function takes an object type argument. Fixes storing or
4339         valuetypes across remoting as well as reducing memory usage.
4340         * image.c, metadata-internals.h: remove now unused ldfld_remote and
4341         stfld_remote wrapper caches.
4342
4343 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
4344
4345         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
4346         is not found.
4347
4348         * reflection.c (mono_image_register_token): New helper function to save
4349         a token->object mapping.        
4350
4351         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
4352         managed code.
4353
4354         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
4355         one dimension arrays. Fixes #367670.
4356         (mono_reflection_get_type_internal): Ditto.
4357
4358 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
4359
4360         * marshal.c: mono_load_remote_field_new() always returns object.
4361         so use the proper signature (fixes bug #366445).
4362
4363 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
4364         
4365         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
4366         add an 'inline_failure' flag instead.
4367
4368 2008-03-04  Mark Probst  <mark.probst@gmail.com>
4369
4370         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
4371         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
4372         contains the location of "this", used for exception handling.
4373
4374 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
4377         their size on all platforms for perf reasons.
4378
4379 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
4380
4381         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
4382         object-internal.h
4383
4384         * object-internal.h: Same.
4385
4386 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
4387
4388         * reflection.h: Fix the build I just broke.
4389
4390 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
4391
4392         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
4393         Test if a token is valid, this remove explicit usage of 
4394         MonoDynamicImage::tokens from the verifier code.
4395
4396         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
4397
4398         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
4399         instead of direct access to MonoDynamicImage::tokens.
4400
4401 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * verify.c (token_bounds_check): Fix the build I just broke.
4404
4405 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
4406
4407         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
4408
4409         * verify.c (verifier_load_method): Fixed the errors message.
4410
4411         * verify.c (mono_method_verify): Fixed a debug message.
4412
4413 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
4414
4415         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
4416         mono-perfcounters.h, class-internals.h: support for predefined
4417         writable counters, query of categories and counters, bugfixes.
4418
4419 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
4420
4421         * verify.c (do_refanytype): Verify the refanytype opcode.
4422
4423         * verify.c (mono_method_verify): Use do_refanytype.
4424
4425 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
4426
4427         * verify.c (do_mkrefany): Verify the mkrefany opcode.
4428
4429         * verify.c (mono_method_verify): Use do_mkrefany.
4430
4431 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
4432
4433         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
4434         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
4435         implementation.
4436
4437 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
4438
4439         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
4440         the type load exception.
4441
4442 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
4443
4444         * verify.c: Added a few FIXME for method signatures
4445
4446         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
4447         of mono_method_get_signature and get vararg call working. Removed unused
4448         checks for return value.
4449
4450         * verify.c (do_refanyval): Verify the refanyval opcode.
4451
4452         * verify.c (mono_method_verify): Implemented verification of arglist and
4453         use do_refanyval.
4454
4455 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
4458         vtypes to marshal.c.
4459
4460         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
4461         it works for AOT as well.
4462
4463 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
4464
4465         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
4466         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
4467         the system time is adjusted.
4468
4469 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
4470
4471         * icall.c, icall-def.h: use the new time functions (fixes the
4472         non-monotonic behaviour of TickCount).
4473
4474 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
4475
4476         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
4477         it breaks the build.
4478         
4479         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
4480         cattr is not finished yet.
4481
4482 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
4483
4484         * verify.c: Proper token validation for field, method and type.
4485
4486 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
4487
4488         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
4489
4490         * loader.c (method_from_memberref): Generate type load error instead of method missing
4491         if the type is not found.
4492
4493 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
4494
4495         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
4496         some of the conversions caused the generation of a marshal directive exception.
4497
4498 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
4499
4500         verify.c: Report which exception should be thrown by the JIT.
4501         Added a lot of FIXME notes.
4502
4503 2008-02-22  Mark Probst  <mark.probst@gmail.com>
4504
4505         * generic-sharing.c: Runtime generic context slots are not
4506         instantiated on init anymore.  Instead, provide function to do the
4507         instantiating on demand.
4508
4509         * class-internals.h: Added vtable to runtime generic context.
4510         Macros for encoding direct and indirect slot offsets in one
4511         guint32.
4512
4513 2008-02-21  Mark Probst  <mark.probst@gmail.com>
4514
4515         * object.c, generic-sharing.c: Moved some generic sharing code
4516         from object.c to generic-sharing.c.
4517
4518         * generic-sharing.c: Added support for extensible runtime generic
4519         context.
4520
4521         * metadata-internals.h: Two new hash tables in MonoImage for
4522         extensible runtime generic context support.
4523
4524         * domain.c: Unregister generic vtables upon domain unloading.
4525
4526         * image.c: Destroy new hash tables upon image unloading.
4527
4528         * metadata.c: Unregister generic subclasses upon image unloading.
4529
4530         * class-internals.h: New data structure for runtime generic
4531         context template.  New fields in the runtime generic context for
4532         extensible part.
4533
4534         * Makefile.am: Added generic-sharing.c.
4535
4536 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
4537
4538         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
4539         there is a pending loader exception, raise it.
4540
4541         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
4542         same.
4543
4544         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
4545         same.
4546
4547         Fixes #363450.
4548
4549 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
4550
4551         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
4552
4553         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
4554         
4555         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
4556         ref-only requests for compatibility with MS.
4557
4558 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
4559
4560         * reflection.c (mono_custom_attrs_from_method): Don't silently
4561         return an empty list for generic method instances.
4562         (mono_custom_attrs_from_param): Likewise.
4563
4564 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
4565             Raja R Harinath  <harinath@hurrynot.org>
4566
4567         Fix #354757
4568         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
4569         * class.c (mono_class_inflate_generic_method_full): Initialize it
4570         when a fully-open method is instantiated.
4571         * metadata.c (inflated_method_equal, inflated_method_hash): Update
4572         to new field.
4573         * reflection.c (inflate_mono_method): Don't create a temporary context.
4574
4575 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
4576
4577         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
4578         Compute correct value, to prepare for imethod->reflection_info going away.
4579
4580 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
4581
4582         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
4583
4584 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
4585
4586         * verify.c: Implement skip visibility flag.
4587
4588 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
4589
4590         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
4591         which contains an extra field to tell the kind of exception that should be thrown.
4592
4593         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
4594
4595 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
4596
4597         * loader.c (mono_method_get_param_names): Initialize 'klass' after
4598         'method' is updated.
4599
4600 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
4601
4602         * class.c (mono_class_layout_fields): Set class->min_align for classes using
4603         explicit layout as well. Fixes #360375.
4604
4605 2008-02-11  Geoff Norton  <gnorton@novell.com>
4606
4607         * loader.c: Guard and dereference against inflated generic methods
4608
4609 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
4610
4611         * class.c: Include Retargetable spec in assembly name.
4612         * assembly.c: Always include PublicKeyToken spec in assembly name
4613         (with value "null" if assembly is not signed), and include
4614         Retargetable spec.
4615         * icall-def.h: Added icall for Assembly.get_fullname.
4616         * icall.c: Added icall returning the fullname of an assembly.
4617
4618 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
4619
4620         * class.c (mono_class_setup_vtable_general): Add a missing call to
4621         mono_class_setup_methods () which is needed in the AOT case.
4622
4623 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
4624
4625         * verify.c (mono_type_get_stack_name): Added. Return the name for the
4626         stack type of the given MonoType.
4627
4628         * verify.c (verify_type_compatibility_full): Handle the void type.
4629
4630         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
4631         way stack merging works.
4632
4633         * verify.c (store_local): Improved verification message.
4634
4635         * verify.c (do_branch_op): If the merging is invalid, the method
4636         is unverifiable and not invalid. Improved error message.
4637
4638         * verify.c (merge_stacks): Properly merge a boxed valuetype and
4639         a reference type diferent than System.Object. Improved error
4640         message.
4641
4642 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
4643
4644         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
4645
4646         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
4647         type of an enum even if the argument is byref.
4648
4649         * verify.c: Replace all explicit uses of enumtype and enum_basetype
4650         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
4651
4652         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
4653
4654         *verify.c (verify_type_compatibility_full): Make enum types
4655         compatible with their base types.
4656
4657         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
4658         types are compatible for the special case of a boxed valuetype and
4659         System.Object.
4660
4661         * verify.c (verify_stack_type_compatibility): The function
4662         is_compatible_boxed_valuetype was extracted from here.
4663
4664         * verify.c (push_arg): Only set ctx->has_this_store if the method
4665         is not static.
4666
4667         * verify.c (do_ldelem): Fixed a typo in an error message and added
4668         strict check for mixing int32 and native int as the array type
4669         and ldelem type.
4670
4671         * verify.c (merge_stacks): Consider boxed valuetypes in the
4672         compatibility checks.
4673
4674 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
4675         * profiler.h: (MonoGCEvent): Added start-stop the world events.
4676
4677 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
4678         *class.c: use_new_interface_vtable_code: renamed the env var to have
4679         a "MONO_" prefix, and fix the logic to enable it by default.
4680
4681 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
4682         *class.c:
4683         mono_class_setup_vtable_general: rewrote the way in which interface
4684         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
4685         makes the code more maintainable.
4686         For now the old code is still there, and can be activated setting
4687         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
4688
4689 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
4690
4691         * verify.c: guarded some debug functions around and #ifdef.
4692
4693         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
4694
4695 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
4696
4697         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
4698         changes for now since they seem to break too many things.
4699
4700 2008-02-05  Mark Probst  <mark.probst@gmail.com>
4701
4702         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
4703         mono_marshal_find_nonzero_bit_offset): Added macro and function
4704         for finding the byte- and bit-offset of a bitfield within a
4705         struct.
4706
4707 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
4708
4709         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
4710         (mono_marshal_get_struct_to_ptr): Ditto.
4711
4712         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
4713         cctor_signature.
4714
4715 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
4716
4717         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
4718         between methods for non-corlib types.
4719
4720 2008-02-02  Geoff Norton  <gnorton@novell.com>
4721
4722         * loader.c (mono_method_get_param_names): Populate the parameter name for 
4723         generic parameters as well. (Fixes #342536)
4724
4725 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
4726
4727         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
4728
4729         * verify.c (do_invoke_method): Fix for calling with byref structs.
4730
4731         * verify.c (do_cast): push a boxed value type based on the type token and not
4732         the type of stack.
4733
4734 2008-01-31  William Holmes  <billholmes54@gmail.com>
4735
4736         * process.c (process_module_string_read): Check the size returned form 
4737           VerQueryValue to avoid out of memory exception. 
4738
4739 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
4742         Handle properly modules which are not in the moduleref table. Fixes
4743         #356938.
4744
4745 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
4746
4747         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
4748         the dynamic case which is now in managed code.
4749         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
4750
4751         * marshal.c (mono_string_to_bstr): Fix a warning.
4752         (init_com_provider_ms): Ditto.
4753
4754         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
4755
4756         * exception.c (mono_get_exception_out_of_memory): New helper function.
4757
4758 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
4759
4760         * marshal.c: Add support for BSTR marshalling
4761         using other COM systems.
4762
4763         Code is contributed under MIT/X11 license.
4764
4765 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
4766
4767         * object.c (mono_runtime_invoke_array): reverted previous
4768         commit as it breaks the build.
4769
4770 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         * object.c (mono_runtime_invoke_array): Verify arguments for
4773         invalid types. Fixes #348522.
4774
4775 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
4776
4777         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
4778         non-final virtual calls using call. 
4779
4780         * verify.c (do_invoke): fixed some TODOs.
4781
4782         * verify.c (push_arg): set has_this_store for "ldarga 0".
4783
4784 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
4787         which belong to an inflated class. Fixes #356531.
4788
4789 2008-01-26  Robert Jordan  <robertj@gmx.net>
4790
4791         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
4792         which resort to FindFirstFile when a certain error condition
4793         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
4794         Code is contributed under MIT/X11 license.
4795
4796 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
4797
4798         * marshal.c (emit_marshal_string): Fix out string marshalling
4799         to use specified encoding. Fixes #323900.
4800
4801         Code is contributed under MIT/X11 license.
4802
4803 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
4804
4805         * class.c (mono_class_inflate_generic_method_full): Don't modify
4806         iresult->context after cache check.
4807
4808 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
4809
4810         * class.c (mono_class_inflate_generic_method_full): Change the
4811         struct assignments to memcpy for better visibility and add some comments.
4812
4813 2008-01-23  Dick Porter  <dick@ximian.com>
4814
4815         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
4816         procedure, and make it work on windows.
4817
4818 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
4819
4820         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
4821         a MonoReflectionTypeBuilder since it is always of that type.
4822
4823         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
4824
4825         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
4826
4827         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
4828         
4829         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
4830
4831         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
4832
4833         * reflection.c (mono_reflection_create_runtime_class): Remove already created
4834         instantiations from the type cache.
4835
4836 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
4839
4840         * verify.c (do_unbox_value): push a controled mutability managed pointer.
4841
4842 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4843
4844         * verify.c (do_ldstr): added, verifies if the #US token is valid.
4845
4846         * verify.c (mono_method_verify): removed old TODO
4847
4848 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4849
4850         * verify.c (do_newobj): add visibility check.
4851
4852 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
4853
4854         * verify.c (do_load_function_ptr): add visibility check.
4855
4856 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
4857         *class.c:
4858         mono_generic_class_get_class: hook profiler events.
4859         mono_field_get_offset: added to support heap-shot in the new profiler.
4860         *class.h: exported mono_field_get_offset.
4861         * reflection.c:
4862         mono_reflection_setup_internal_class: hook profiler events.
4863
4864 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
4865
4866         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
4867         argument here too and use it to avoid checking for pending exceptions if 
4868         possible.
4869
4870 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
4871
4872         * assembly.c (build_assembly_name): add arg for passing the assembly
4873         flags. Do not consider a PublicKey with value "null" valid.
4874         (mono_assembly_name_parse_full): added boolean argument that will be
4875         set if the assembly name contains a PublicKeyToken spec. Added support
4876         for the Retargetable spec for which only Yes or No are allowed as valid
4877         value. Consider assembly name invalid if Retargetable spec is set, but
4878         either version, culture or public key (token) are not specified.
4879         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
4880         with implementation in assembly.c.
4881         * icall.c (fill_reflection_assembly_name): also copy assembly flags
4882         from MonoAssemblyName.
4883         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
4884         introduced argument for mono_assembly_name_parse_full to know if the
4885         assembly name has a PublicKeyToken spec, and if it has instruct
4886         fill_reflection_assembly_name to use default value for keyToken (if
4887         PublicKeyToken is null).
4888
4889 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4890
4891         * verify.c (mono_method_verify): fixed ovf ops with
4892         float values. They are unverifiable now.
4893
4894 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * class.c (set_failure_from_loader_error): add BadImageException to the
4897         list of exceptions that can cause a type to fail to load.
4898
4899         * class.c (mono_class_get_exception_for_failure): same.
4900
4901 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4902
4903         * verify.c (in_any_exception_block): added, check if offset
4904         is part of any exception handling clause.
4905
4906         * verify.c (get_stack_type): added VAR and MVAR types.
4907
4908         * verify.c (do_stobj): better error messages.
4909
4910         * verify.c (do_cpobj): added, check cpobj.
4911
4912         * verify.c (do_initobj): added, check initobj.
4913
4914         * verify.c (do_sizeof): added, check sizeof.
4915
4916         * verify.c (do_localloc): added, check localloc.
4917
4918         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
4919
4920 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
4921
4922         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
4923         save_lmf/restore_lmf opcodes.
4924
4925         * threads.c (mono_threads_install_notify_pending_exc): New function to
4926         install a callback notifying the JIT there is a pending exception on a thread.
4927         (mono_thread_request_interruption): Call the new callback.
4928         (mono_thread_get_and_clear_pending_exception): New function to return the
4929         exception pending on a thread.
4930
4931         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
4932         to turn off checking for pending exceptions.
4933         (mono_marshal_get_native_wrapper): Ditto.
4934
4935 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
4936
4937         * threads-types.h: Get rid of the unnecessary extern declarations.
4938
4939 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
4940
4941         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
4942         return field from parent class if not private.
4943         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
4944         returns fields from parent class if they are not private.
4945         (method_nonpublic): added function to determine if a given method
4946         should be considered non-public. Returns false for private methods
4947         on parent class, and internal methods from parent on the 1.0 profile.
4948         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
4949         use method_nonpublic function to determine whether method should be
4950         returned.
4951         (property_accessor_public): use newly introduced method_nonpublic
4952         function to determine whether accessor is non-public. 
4953         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
4954         event from parent class if not private. Only return static event if
4955         Static flag is set, and only return static event from parent class if
4956         FlattenHierarchy flag is set.
4957         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
4958         include non-private events from parent class.
4959
4960 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
4963         warning.
4964
4965 2008-01-16  Wade Berrier <wberrier@novell.com>
4966
4967         * security.c: Add assembly.h header to appease some warnings
4968
4969 2008-01-16  Dick Porter  <dick@ximian.com>
4970
4971         * process.c (process_module_string_read): Remove trailing null
4972         when saving string.
4973
4974 2008-01-16  Mark Probst  <mark.probst@gmail.com>
4975
4976         * class-internals.h: A new data structure describing the layout of
4977         a runtime generic context (MonoRuntimeGenericContextTemplate).
4978
4979         * metadata-internals.h: Added a hash table to MonoDomain that maps
4980         from open generic classes to their runtime generic context
4981         templates.
4982
4983         * object.c: Building of the runtime generic context, including
4984         proper handling of generic type arguments of superclasses.
4985         Building of the runtime generic context according to the template.
4986
4987 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * class.c (mono_class_setup_fields): Set field.count for generic instances.
4990         Fixes #350856.
4991
4992         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
4993         mono_portability_find_file (). Fixes #325466.
4994         (mono_image_get_public_key): Fix a warning.
4995
4996 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
4999         Fixes #353550.
5000         (mono_class_from_name_case): Ditto.
5001
5002 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
5003
5004         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
5005           common storage for the tables used in the System/NumberFormatter class.
5006
5007 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
5008
5009         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
5010
5011 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
5012
5013         * verify.c (get_boxable_mono_type): check if the token is valid.
5014
5015         * verify.c (set_stack_value): changed to add an error if an
5016         invalid type is set on stack. Changed all callers due to signature change.
5017
5018         * verify.c (do_stobj): implement stobj validation.
5019
5020 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
5021
5022         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
5023         set container->is_method, it was set earlier.
5024
5025         * metadata.c (type_in_image): Handle MVARs which belong to not finished
5026         generic methods.
5027
5028         * reflection.c (mono_reflection_initialize_generic_parameter): Set
5029         is_method of the generic container to TRUE for methods.
5030
5031 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
5032
5033         * metadata.c (type_in_image): Handle type parameters properly.
5034
5035         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
5036         memory ownership of this structure.
5037
5038 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
5039
5040         * verify.c (get_boxable_mono_type): make typedref types been just
5041         unverifiable. check for void type.
5042
5043         * verify.c (do_unbox_any): added, verify opcode unbox.any.
5044
5045         * verify.c (do_load_function_ptr): accept method spec tokens.
5046
5047 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
5048
5049         * marshal.c (mono_class_native_size): Always set *align even if this is called
5050         recursively.
5051
5052 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
5053
5054         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
5055         out-of-date.
5056
5057 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
5058
5059         * verify.c: removed some old unused tables. A huge bunch of small fixes
5060         to things found while testing the verifier with mono basic.
5061
5062         * verify.c (dump_stack_value): dump null literal flag to.
5063
5064         * verify.c (verify_type_compatibility_full): fix comparison
5065         for types that have a generic super type.
5066
5067         * verify.c (verify_stack_type_compatibility): fix compatibility
5068         between null literals and reference types. fix compatibility between
5069         boxed valuetypes and object. fix corner case test for enums.
5070
5071         * verify.c (do_cmp_op): proper verification of cgt.un in case
5072         of reference types.
5073
5074         * verify.c (do_invoke_method): fix error message.
5075
5076         * verify.c (do_store_indirect
5077
5078         * verify.c (check_is_valid_type_for_field_ops): proper verification
5079         of managed pointers to valuetypes and boxed valuetypes. proper verification
5080         of null literals.
5081
5082         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
5083         allow token to be a reference type.
5084
5085         * verify.c (do_cast): proper handling of boxes valuetypes.
5086
5087         * verify.c (do_stelem): proper handling of storing a boxed valuetype
5088         in object[].
5089
5090         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
5091         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
5092         fixed the decoding of unbox_any
5093
5094 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
5097
5098 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
5099
5100         * verify.c (do_newobj): do delegate verification.
5101
5102         * verify.c (verify_delegate_compatibility): perform delegate
5103         verification.
5104
5105         * verify.c (verify_ldftn_delegate): perform tests related to
5106         ldftn delegates.
5107
5108         * verify.c (mono_delegate_signature_equal): perform the
5109         slightly diferent signature comparison required by delegates.
5110
5111         * metadata.c (mono_metadata_type_equal_full): added and exported
5112         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
5113         allows signature only comparison.
5114
5115         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
5116         as MONO_INTERNAL.
5117
5118 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5119
5120         * verify.c: added a bunch of stack_slot_* functions to
5121         make access to stack slot type easier. This is required to
5122         allow optional flags, like null literal, boxed value and
5123         this pointer.
5124         All access paths to IlStackDesc::stype have been changed 
5125         to use these new funcions.
5126         Removed a bunch of unused functions and cleared all warnings.
5127         This patch introduces the usage of the this pointer and 
5128         boxed value flags.
5129
5130 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
5131
5132         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
5133
5134 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
5135
5136         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
5137         match managed version.
5138
5139         * appdomain.c: Bump corlib version.
5140         
5141         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
5142         argument.
5143
5144 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
5145
5146         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
5147         Set public key token to zero-length byte array if assembly is not
5148         strongnamed.
5149
5150 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
5153         writing a vtype array elem.
5154
5155 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
5156
5157         * assembly.c (build_assembly_name): return FALSE if length of token is
5158         not 16 (if not "null").
5159         (mono_assembly_name_parse_full): return FALSE if value of version,
5160         culture, token or key is 0.
5161         * icall.c (fill_reflection_assembly_name): add boolean arguments to
5162         specify whether public key and public key token must be set to default
5163         value (zero-length byte array) if not available. Set versioncompat to
5164         SameMachine. If public key is available or the default is set, then
5165         set PublicKey flag.
5166         (ves_icall_System_Reflection_Assembly_FillName): if no public key
5167         is available, use empty byte array as default value. On the 2.0
5168         profile, use default value for public key token if not set.
5169         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
5170         profile, use default value for public key if not set. On the 2.0
5171         profile, use default value for public key token if not set.
5172         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
5173         default values for public key and public key token.
5174
5175 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
5176
5177         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
5178         field to keep it in synch with the managed object.
5179
5180         * marshal.c (emit_marshal_object): Add support for byref marshalling of
5181         delegates. Fixes #351520.
5182
5183         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
5184         contains defined memory.
5185         
5186         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
5187
5188         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
5189         
5190         * sgen-gc.c (check_consistency): New helper function to do a consistency check
5191         of the GC data structures.
5192
5193         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
5194
5195         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
5196         
5197         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
5198         barrier.
5199         (mono_array_clone_in_domain): Ditto.
5200         (mono_array_clone_in_domain): Ditto.
5201
5202         * threads.c (start_wrapper): Register the thread start argument as a GC root.
5203         (cache_culture): Use a write barrier.
5204
5205         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
5206         (ves_icall_get_property_info): Ditto.
5207
5208         * object.h (MONO_STRUCT_SETREF): New macro.
5209
5210         * class-internals.h (MonoStats): Add some GC statistics.
5211
5212         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
5213
5214 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
5215
5216         * exception.c (mono_exception_from_name_two_strings):
5217         Break from loop after method is found.
5218
5219 2008-01-04  Dick Porter  <dick@ximian.com>
5220
5221         * process.c (process_module_string_read): Rename variable to
5222         reflect correct usage, after fixing bug 345972.
5223
5224 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
5225
5226         * verify.c (mono_type_create_fnptr_from_mono_method): 
5227         created a MonoType function pointer instance to be used during
5228         verification. The verifier releases this memory at end.
5229
5230         * verify.c (mono_method_is_constructor): extracted repeated
5231         checks for constructor into a single class.
5232
5233         * verify.c (do_push_field): use new extracted method
5234         for constructor check.
5235
5236         * verify.c (do_newobj): same.
5237
5238         * verify.c (do_ldftn): renamed to do_load_function_ptr
5239         and make it verify ldvirtftn too.
5240
5241         * verify.c (mono_method_verify: proper verification
5242         of ldvirtftn. release created MonoMethod instances.
5243
5244 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
5245
5246         * verify.c (token_bounds_check): added.
5247
5248         * verify.c (do_ldftn): added.
5249
5250         * verify.c (mono_method_verify): proper verificartion of ldftn.
5251
5252 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
5253
5254         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
5255         than the table row count. It's the resposibility of the caller to
5256         make the bounds check and raise the correct error.
5257
5258         * metadata.c (mono_metadata_decode_row_col): Same.
5259
5260         * loader.c (mono_get_method_from_token): perform bounds check
5261         on token for methoddef table.
5262
5263 2007-12-29  Miguel de Icaza  <miguel@novell.com>
5264
5265         * icall.c
5266         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
5267         assert into a negative result, the managed code already coped with
5268         that.
5269
5270         Some folks on Windows reported this error. 
5271
5272 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
5273
5274         * appdomain.c: Bump corlib version.
5275         * icall.c:
5276         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
5277         CultureInfo.CreateCulture to create CultureInfo for name.
5278         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
5279         create CultureInfo for name. Fixes bug #347174.
5280
5281 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
5282
5283         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
5284         flags.
5285
5286         * verify.c (is_valid_branch_instruction): allow branching to the
5287         first instruction of the protected block.
5288
5289         * verify.c (is_valid_cmp_branch_instruction): same.
5290
5291         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
5292         avoid double initialization.
5293
5294         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
5295         detect which cases the eval stack should just be copied.
5296
5297         * verify.c (mono_method_verify): check if the eval stack
5298         is empty when entering a protected block.
5299
5300 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
5301
5302         * verify.c: added is_clause_in_range, is_clause_inside_range,
5303         is_clause_nested and verify_clause_relationship. They perform
5304         the verifications stated in P1 12.4.2.7.
5305
5306         * verify.c (mono_method_verify): remove some unused variables,
5307         add the new exception clause checks, add instruction border
5308         checks for protected block start/end, improved some error 
5309         messages and fixed a bug in the way invalid instruction access
5310         is detected.
5311
5312 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
5313
5314         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
5315         from GC 7.0 if available.
5316
5317         * object.c: Remove an unused define.
5318         
5319         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
5320
5321         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
5322
5323         * null-gc.c (mono_gc_make_descr_for_array): Implement.
5324
5325         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
5326
5327         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
5328         to take the same arguments as the other make_descr functions.
5329
5330         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
5331
5332         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
5333         directly.
5334
5335         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
5336         mini.c.
5337
5338         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
5339         call to boehm-gc.c.
5340
5341         * boehm-gc.c (mono_gc_register_root): Fix a warning.
5342
5343         * null-gc.c (mono_gc_register_root): Fix a warning.
5344
5345         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
5346
5347         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
5348         (mono_gc_base_init): Call GC_init ().
5349
5350         * null-gc.c: Define mono_gc_register_root () as a no-op.
5351
5352         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
5353
5354 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
5355
5356         * verify.c: add prototype for merge_stacks at top
5357
5358         * verify.c (do_switch): added.
5359
5360         * verify.c (merge_stacks): on some cases the stack merging
5361         was not happening properly. Unequal stack sizes at merge
5362         points should be invalid.
5363
5364         * verify.c (mono_method_verify): added more debug info on stack state.
5365         verify switch properly.
5366
5367 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * method-builder.h: New file, moved the mono_mb_ declarations here from 
5370         marshal.h.
5371
5372         * boehm-gc.c marshal.c: Include method-builder.h.
5373
5374         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
5375
5376         * marshal.c: Remove some code which is now in method-builder.c.
5377
5378 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
5379
5380         * method-builder.c: New file, extraction of the method builder functionality 
5381         from marshal.c.
5382
5383         * marshal.c: Move the mb functions into method-builder.c.
5384
5385         * marshal.h marshal.c: Export some mono_mb_... functions.
5386
5387         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
5388
5389         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
5390         the caller.
5391
5392         * class.c (mono_class_get_full): Check the token type in the dynamic case.
5393
5394         * loader.c (mono_field_from_token): Ditto.      
5395
5396         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
5397         type as well.
5398         
5399         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
5400         Fixes #342565.
5401
5402         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
5403         a helper function for setting it.
5404
5405         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
5406
5407         
5408         * assembly.c: Significally simplify code now that referenced assemblies are 
5409         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
5410
5411         * threads.h: Don't include  the internal threads-types.h header file. Fixes
5412         #349952.
5413
5414 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
5417         instructions that were target of branches or are at protected block boundaries.
5418
5419         * verify.c (in_same_block): handle filter clauses.
5420
5421         * verify.c (is_valid_branch_instruction): added. checks the target of
5422         instructions br or brtrue/false.
5423
5424         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
5425         binary branch instructions such as beq and bge.
5426
5427         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
5428         and made it pin the instruction as been part of the exception block.
5429
5430         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
5431         of in_same_block.
5432
5433         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
5434         of in_same_block.
5435
5436         * verify.c (do_ret): ret from a protected block is unverifiable and
5437         not invalid.
5438
5439         * verify.c (do_static_branch): verify br and br.s instructions.
5440
5441         * verify.c (merge_stacks): add extra param to support detection
5442         of branches in the middle of instructions.
5443         
5444         * verify.c (mono_method_verify): verify branches and exception blocks
5445         that target the middle of instructions. Proper verification of br and br.s.
5446
5447 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
5448
5449         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
5450         skip_visibility field.
5451         (reflection_methodbuilder_from_dynamic_method): Ditto.
5452
5453         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
5454         registrations. Fixes #348193.
5455
5456         * threads.h: Move the internal mono_thread_get_pending_exception () to
5457         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
5458
5459 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
5460
5461         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
5462         icall registration. Fixes #348193.
5463
5464         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
5465         for corlib classes into object. Fixes #349621.
5466
5467 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
5468
5469         * icall.c (property_accessor_nonpublic): new function to determine
5470         whether an accessor allows a property to be considered non-public.
5471         Returns false for private accessor(s) from parent class, and internal
5472         accessor(s) from parent on 2.0 profile (and higher).
5473         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
5474         to determine whether property should be included if NonPublic flag
5475         is set. Fixes bug #349078.
5476
5477 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
5478
5479         * verify.c (init_stack_with_value): added.
5480
5481         * verify.c (mono_method_verify): extracted common
5482         code for exception initialization into init_stack_with_value.
5483
5484         * verify.c (mono_method_verify): initialize the exception
5485         for handler clauses as well.
5486
5487         * verify.c (mono_method_verify): fix the exception clause
5488         ordering rules, it should use handler end offset and not
5489         start offset.
5490
5491 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
5492
5493         * rawbuffer.c: remove useless warning.
5494
5495 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
5496
5497         * threads.h, threads-types.h: move functions to the correct header
5498         (fixes bug#349952).
5499
5500 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
5501
5502         * verify.c (mono_method_verify): proper verification
5503         of exception handling clauses ranges and fallthru in
5504         and out of protected blocks.
5505
5506 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * verify.c (mono_method_verify): fixed compilation issue.
5509
5510 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
5511
5512         * verify.c (mono_method_verify): a printf slipped in, changed
5513         to use verifier debug macro.
5514
5515 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
5516
5517         * verify.c (is_correct_leave): check for filter clauses.
5518
5519         * verify.c (do_filter): added.
5520
5521         * verify.c (mono_method_verify): property verification of leave.
5522
5523
5524 2007-12-18  Mark Probst  <mark.probst@gmail.com>
5525
5526         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
5527         Win32 build, until we figure out how to do the proper thing on
5528         Win32.
5529
5530 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
5531
5532         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
5533         by the previous patch.
5534         
5535         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
5536         the assembly resolve handler for refonly assemblies.
5537
5538 2007-12-17  Mark Probst  <mark.probst@gmail.com>
5539
5540         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
5541         Make sure only one thread is allowed to commence shutdown, and
5542         don't allow new threads to be started once shutdown is in
5543         progress.
5544
5545 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
5546
5547         * verify.c (is_correct_endfilter): added.
5548
5549         * verify.c (is_unverifiable_endfilter): added.
5550
5551         * verify.c (do_endfilter): added.
5552
5553         * verify.c (mono_method_verify): property verification of endfilter
5554         and fixed a corner case or endfinally.
5555
5556 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
5557
5558         * verify.h: new flags to support fail fast of unverifiable code and
5559         do non-strict verification. Non-strict verification is required to
5560         have MS runtime compatibility. There are a huge amount of unverifiable
5561         code that it accepts as verifiable. The strict mode verifies the code
5562         as the specs says.
5563         Non-strict mode will be required in cases where code needs to be
5564         accepted as verifiable but fails under strict mode.
5565
5566         * pedump.c: added support to fail fast and non-strict verification.
5567
5568         * verify.c: added support for both fail fast and non-strict verification.
5569
5570 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
5571
5572         * verify.c (is_correct_endfinally): added.
5573
5574         * verify.c (mono_method_verify): property verification of endfinally.
5575
5576 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
5577
5578         * verify.c (in_any_block): check for filter clauses.
5579
5580         * verify.c (is_correct_rethrow): added.
5581
5582         * verify.c (mono_method_verify): property verification of rethrow.
5583
5584         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
5585
5586 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
5587
5588         * verify.c (do_throw): added.
5589
5590         * verify.c (mono_method_verify): property verification of throw
5591
5592 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
5593
5594         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
5595         assemblies. Fixes #346425.
5596
5597 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
5600         FieldBuilders.
5601
5602         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
5603
5604         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
5605         prevent asserts when this is called with a token which might not be valid.
5606
5607         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
5608         lookup_dynamic_token_class with valid_token == FALSE.
5609
5610         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
5611
5612         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
5613
5614         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
5615         
5616 2007-12-10  Mark Probst  <mark.probst@gmail.com>
5617
5618         * gc.c: Don't delay threadpool thread finalization unless Mono is
5619         shutting down.
5620
5621 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5622
5623         * threads.c: turn an assert into a non-fatal warning.
5624
5625 2007-12-09  Robert Jordan  <robertj@gmx.net>
5626
5627         * icall.c (GetVirtualMethod): Add missing argument validation.
5628
5629 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
5630
5631         * verify.c (do_cast): added.
5632
5633         * verify.c (mono_method_verify): property verification of castclass and isinst.
5634
5635
5636 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
5637
5638         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
5639
5640         * verify.c (do_stelem): added.
5641
5642         * verify.c (mono_method_verify): property verification of stelem.X.
5643
5644 2007-12-07  Mark Probst  <mark.probst@gmail.com>
5645
5646         * class.c, class-internals.h: Introduce an environment variable
5647         (MONO_GENERIC_SHARING) through which the extent of generic code
5648         sharing can be controlled (share all classes, share only corlib
5649         classes, or share nothing).
5650
5651         * object.c: Only create runtime generic context for classes for
5652         which sharing is enabled.
5653
5654 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
5655
5656         * verify.c (do_ldelem): refactor it to work with ldelem.any.
5657
5658         * verify.c (mono_method_verify): property verification of ldelem.any.
5659
5660 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
5661
5662         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
5663         added ldelem.X opcodes.
5664
5665         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
5666
5667         * verify.c: proper verification of ldelem.X 
5668
5669 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
5672
5673 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5674
5675         * verify.c (mono_method_verify): null literal requires special handling,
5676         the value pushed on stack need to be flagged as so.
5677
5678         * verify.c (do_ldelema): Verify ldelema properly.
5679
5680 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * verify.c: Verify ldlen properly.
5683
5684 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
5687         to the target object's type. Fixes #346160.
5688
5689 2007-12-05  Dick Porter  <dick@ximian.com>
5690
5691         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
5692         Solaris needs the same workaround as BSD-derived systems.  Fixes
5693         bug 323524, patch by Burkhard Linke
5694         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
5695
5696 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
5697
5698         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
5699         handle to use when error dialog is shown; otherwise, update mask
5700         to show no error dialog when an error occurs.
5701
5702 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
5703
5704         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
5705
5706         * class.c (mono_class_get_field_default_value): New helper function to initialize
5707         field->def_type and field->data.
5708
5709 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
5710
5711         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
5712         the general one.
5713
5714         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
5715
5716         * marshal.c: Avoid depending on delegate->method_info being set.
5717
5718         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
5719         
5720         * object.c (mono_delegate_ctor): Set delegate->method.
5721
5722         * object-internals.h (struct _MonoDelegate): Add 'method' field.
5723
5724         * appdomain.c: Bump corlib version.
5725
5726 2007-11-27  Raja R Harinath  <harinath@gmail.com>
5727
5728         * metadata.c (mono_generic_inst_equal_full): Short-circuit
5729         equality check if we're comparing canonicalized MonoGenericInsts.
5730
5731 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
5732
5733         * class.c (generic_array_methods): Call mono_class_setup_methods () before
5734         accessing class->methods.
5735
5736 2007-11-22  Dick Porter  <dick@ximian.com>
5737
5738         * threads.c: Ensure that the synch_cs is set before trying to use
5739         it.
5740
5741 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
5742
5743         * profiler.c: r89126 broke the statistial profiler, unbreak.
5744
5745 2007-11-22  Martin Baulig  <martin@ximian.com>
5746
5747         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
5748
5749         * mono-debug.c
5750         (mono_debug_debugger_version): Bump to 3.
5751         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
5752         -> mono_debugger_class_initialized().
5753
5754         * mono-debug-debugger.c
5755         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
5756
5757         * class.c
5758         (mono_debugger_start_class_init_func): Removed.
5759         (mono_debugger_class_loaded_methods_func): Added.
5760         (mono_class_setup_methods): Call it here.
5761
5762 2007-11-22  Martin Baulig  <martin@ximian.com>
5763
5764         * mono-debug.c
5765         (mono_debug_add_delegate_trampoline): New public method.
5766         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
5767
5768         * mono-debug.h
5769         (MonoSymbolTable): Added `global_data_table'.
5770         (MonoDebuggerTypeKind): Removed.
5771
5772 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
5773
5774         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
5775         these methods.
5776
5777         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5778         
5779 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
5780
5781         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
5782
5783 2007-11-20  Martin Baulig  <martin@ximian.com>
5784
5785         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
5786
5787         * mono-debug-debugger.c
5788         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
5789         (mono_debugger_remove_breakpoint): Likewise.
5790         (mono_debugger_check_breakpoints): Likewise.
5791         (mono_debugger_register_class_init_callback): New public method.
5792         (mono_debugger_remove_class_init_callback): Likewise.
5793         (mono_debugger_add_type): Likewise.
5794
5795         * mono-debug-debugger.h
5796         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
5797
5798 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
5799
5800         * class.c: more interface implementations needed for the
5801         array enumerator (fixes bug #341112).
5802
5803 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
5804
5805         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
5806         fix ParamName of ArgumentNullExceptions.
5807
5808 2007-11-17  Miguel de Icaza  <miguel@novell.com>
5809
5810         * reflection.c (mono_reflection_encode_sighelper): Generate the
5811         modopts and modreqs.   I have a useless test that crashes monodis,
5812         but that shows the code working.
5813
5814 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
5815
5816         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
5817         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
5818
5819 2007-11-15  Dick Porter  <dick@ximian.com>
5820
5821         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
5822         When joining a thread, it's the thread that's calling Join that
5823         gets WaitSleepJoin state not the target.  Fixes the standalone
5824         test case in bug 334740, and hopefully the whole bug too.
5825
5826 2007-11-15  Dick Porter  <dick@ximian.com>
5827
5828         * process.c: Read file version info from the files pointed at by
5829         process modules, not the current process.  Fixes bug 315969.
5830
5831         Use windows typedef names in some places to fix warnings on the
5832         windows build.
5833
5834 2007-11-15  Mark Probst  <mark.probst@gmail.com>
5835
5836         * image.c, metadata-internals.h: Added a generic_class_cache hash
5837         to MonoImage for looking up generic classes when sharing generics.
5838
5839 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
5840
5841         * sgen-gc.c: warning cleanups.
5842
5843 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
5846         inherited properties.
5847
5848 2007-11-14  Mark Probst  <mark.probst@gmail.com>
5849
5850         * object.c, class-internals.h: Added more information to the
5851         runtime generic context.
5852
5853 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
5854
5855         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
5856         instead of just the target method. Generalize the abstract method handling to
5857         handle any non-static method.
5858
5859         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
5860         mono_marshal_get_delegate_invoke () signature change.
5861
5862 2007-11-13  Mark Probst  <mark.probst@gmail.com>
5863
5864         * class.c, class-internals.h: Made
5865         mono_type_get_basic_type_from_generic () public.  Fixed member
5866         access check for shared generics.
5867
5868         * loader.c: Don't insert field into field cache if it's part of a
5869         non-inflated generic class.
5870
5871         * domain.c, domain-internals.h: The generic sharing context is now
5872         part of the jit info data structure.  Added two accessor
5873         functions.
5874
5875 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
5876
5877         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
5878         the array Get/Set/Address methods, since the JIT inlines them.
5879
5880         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
5881
5882         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
5883         (mono_image_init): Initialize runtime_invoke_direct_cache.      
5884
5885         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
5886         mono_marshal_get_delegate_invoke signature change.
5887
5888         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
5889         an additional argument. Add support for invoking abstract methods.
5890
5891         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
5892
5893         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
5894
5895 2007-11-09  Mark Probst  <mark.probst@gmail.com>
5896
5897         * class.c: Do field layout for open generic classes as well.
5898
5899 2007-11-09  Mark Probst  <mark.probst@gmail.com>
5900
5901         * gc.c, gc-internal.h: Don't finalize threadpool threads with
5902         other objects, because the threadpool is still around.  Put them
5903         in a list instead and after finalizing all other objects in the
5904         root domain shut down the thread pool and then finalize the
5905         threads.  Fixes bug #337383.
5906
5907         * threads.c, thread-types.h: New mono_thread_create_internal()
5908         function for marking a thread with the threadpool flag before it
5909         started.  Set synch_cs to NULL after freeing it.
5910
5911         * threadpool.c: Mark threadpool threads before they start.
5912
5913 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
5914
5915         * reflection.h, reflection.c: don't export random functions
5916         and lazy load dbnull and missing objects.
5917
5918 2007-11-07  Jonathan Chambers <joncham@gmail.com>
5919
5920         * class.c: Initialize COM types if COM interfaces
5921         are present (not just COM classes).
5922         
5923         Code is contributed under MIT/X11 license.
5924
5925 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
5926         * reflection.c:
5927         create_dynamic_mono_image: hook module profiler events (dynamic case).
5928         mono_image_basic_init: hook assembly profiler events (dynamic case).
5929
5930 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
5931         * profiler.c:
5932         simple_appdomain_unload: completely terminate the profiler
5933         instead of only processing the statistical samples.
5934         simple_shutdown: make sure this is really called exactly once,
5935         even in multithreaded applications, and always listen to
5936         appdomain events.
5937         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
5938         here, the "[un]load" functions will do it.
5939         Fixes bugs #333791 and #325261.
5940
5941 2007-11-07  Geoff Norton  <gnorton@novell.com>
5942
5943         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
5944         rather than depend on __APPLE__.
5945
5946 2007-11-07  Mark Probst  <mark.probst@gmail.com>
5947
5948         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
5949
5950 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
5951
5952         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
5953         UTF16 MonoString. Fix the crash from bug #335488
5954
5955 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
5956
5957         * marshal.c: Correct (for non-Win32 OS) length != size in 
5958         mono_string_from_bstr. Fix #339530.
5959
5960 2007-11-06  Geoff Norton  <gnorton@novell.com>
5961
5962         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
5963         to succeed
5964
5965 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
5966
5967         * process.c: Added run-time GetProcessId API detection for Windows.
5968
5969 2007-11-04  Miguel de Icaza  <miguel@novell.com>
5970
5971         * reflection.c  (mono_param_get_objects): If a parameter has the
5972         attribute [System.Runtime.InteropServices.Optional] we should
5973         set the DefaultValue of the ParameterInfo to be
5974         System.Reflection.Missing instead of DBNull.
5975
5976         See bug #339013.
5977
5978         (mono_get_reflection_missing_object): New method,
5979         returns the System.Reflection.Missing.Value singleton instance.
5980
5981 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
5982
5983         * culture-info-table.h : regenerated.
5984
5985 2007-11-02  Jonathan Chambers <joncham@gmail.com>
5986
5987         * icall.c: Use GetEnvironmentStrings on windows
5988         so we are using the same environment block as 
5989         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
5990         #333740.
5991         
5992         Code is contributed under MIT/X11 license.
5993
5994 2007-10-31  Martin Baulig  <martin@ximian.com>
5995
5996         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
5997
5998         * mono-debug-debugger.h
5999         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
6000
6001 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
6002
6003         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
6004         classes.
6005
6006 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
6007
6008         * culture-info-table.h : regenerated.
6009
6010 2007-10-30  Robert Jordan  <robertj@gmx.net>
6011
6012         * icall-def.h, icall.c:
6013         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
6014
6015         Code is contributed under MIT/X11 license.
6016
6017 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
6018
6019         * class.c (mono_class_setup_vtable): Find the inflated methods in the
6020         inflated class instead of inflating them again.
6021         
6022         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
6023         dynamic case.
6024
6025         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
6026         Call setup_supertypes () after klass->parent is set.
6027         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
6028
6029         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
6030         for inflated instances of not yet created dynamic generic classes.
6031         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
6032         times from inflated_method.
6033         (methodbuilder_to_mono_method): Ditto.
6034
6035 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6036
6037         * gc.c: code cleanup and removed old untested option of not creating the
6038         finalizer thread.
6039
6040 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
6041
6042         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6043         creating a jump trampoline for dynamic methods.
6044
6045 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
6046
6047         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
6048         generic TypeBuilders when called from another method of the same type (bug #335131).
6049
6050
6051 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
6054         doesn't seem to work perfectly.
6055         
6056         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
6057         called multiple times.
6058         (methodbuilder_to_mono_method): Ditto.
6059         (resolve_object): Inflate FieldBuilder's.
6060
6061 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6062
6063         * string-icalls.c, string-icalls.h, appdomain.c: patch from
6064         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
6065         RemoveEmptyEntries in the string.Split implementation (bug #322375).
6066
6067 2007-10-26  Dick Porter  <dick@ximian.com>
6068
6069         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
6070         Thread initialisation changes
6071
6072 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
6073
6074         * verify.c: fix compatibility check between arrays and System.Array
6075
6076 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
6077
6078         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
6079         too. Fixes #336999.
6080
6081 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * object.c (mono_value_box): Use typed allocation here.
6084
6085 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
6088         trampoline instead of compiling the method right away.
6089
6090         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
6091
6092 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
6095         related fields for dynamic classes. Fixes #334493.
6096
6097 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
6100         
6101         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
6102
6103         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
6104         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
6105
6106         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
6107
6108         * reflection.c (create_generic_typespec): Initialize klass->generic_container
6109         if needed.
6110         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
6111
6112 2007-10-18  Jonathan Chambers <joncham@gmail.com>
6113
6114         * marshal.c: Use correct key when removing item
6115         from ccw_hash.
6116         
6117         Code is contributed under MIT/X11 license.
6118
6119 2007-10-17  William Holmes  <billholmes54@gmail.com>
6120
6121         *marshal.c: Adding a case to marshal booleans to U1
6122
6123         Code is contributed under MIT/X11 license.
6124
6125 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * class.c (mono_class_from_name): Search the modules compromising dynamic
6128         assemblies. Fixes #331601.
6129
6130 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
6131
6132         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
6133         exception if the type name contains an assembly component. Fixes #334203.
6134
6135         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
6136         modules inside dynamic assemblies. Fixes #334200.
6137         
6138         * reflection.c: Set image->public_key and image->public_key_length;
6139
6140         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
6141         fields.
6142
6143         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
6144         
6145 2007-10-16  Mark Probst  <mark.probst@gmail.com>
6146
6147         * metadata.c: Implemented correct comparing of generic classes.
6148         An inflated generic class can be equal to a non-inflated one if it
6149         is inflated with generic type variables as type arguments.  Fixes
6150         bug #333798.
6151
6152 2007-10-15  Dick Porter  <dick@ximian.com>
6153
6154         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
6155         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
6156         81646.
6157
6158         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
6159         instead of a monitor lock.  This means that monitor_try_enter and
6160         co can set the thread state safely.
6161         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
6162         thread_interrupt_requested, so interrupt actually works.
6163
6164         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
6165         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
6166         state accessor function
6167
6168 2007-10-15  Martin Baulig  <martin@ximian.com>
6169
6170         * mono-debug.h
6171         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
6172         the debugger with the current runtime.
6173
6174 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
6175
6176         * object.c, object-internals.h: added the ability to set a single
6177         trampoline for all the slots in a vtable.
6178
6179 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6180
6181         * marshal.c: deal with a possible race condition during multicast
6182         delegate invocation.
6183
6184 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6185
6186         * class.c: ensure value type methods don't have the synchronized
6187         flag set.
6188
6189 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6190
6191         * string-icalls.c, string-icalls.h: reverted unapproved patch that
6192         breaks the build.
6193
6194 2007-10-11  Joel Reed  <joelwreed@comcast.com>
6195
6196         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
6197         to take an options parameter so that empty entries can be removed during
6198         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
6199
6200 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6201
6202         * marshal.c: make sure we don't store the signature from a dynamic
6203         method into the runtime invoke cache (bug #327189).
6204
6205 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6206
6207         * marshal.c: make sure the wrapper methods are properly initialized.
6208
6209 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6210
6211         * metadata.c, metadata-internals.h: Generalized
6212         mono_type_stack_size() to mono_type_stack_size_internal() which
6213         takes an additional argument specifying whether it allows open
6214         types.
6215
6216 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6217
6218         * verify.c (do_invoke_method): handle typedbyref params
6219         correctly and check for unverifiable return values.
6220
6221         * verify.c (do_newobj): fix a warning.
6222
6223 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6224
6225         * verify.c: don't tread typedbyref as allways unverifable,
6226         so uses, like (ld/st)loc.0 are valid. verify for the cases
6227         that it matters, like boxing related operations.
6228
6229 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6230
6231         * verify.c: add verification of the newobj opcode. verification
6232         of delegate instantation still missing due ldftn and virldftn not
6233         pushing the function type on stack
6234
6235 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6236
6237         * class-internals.h: Runtime generic context data structure
6238         definition.
6239
6240         * object.c: Initialization of runtime generic context at runtime
6241         vtable creation time.
6242
6243 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
6244         * class.c (mono_class_create_from_typedef,
6245         mono_class_from_generic_parameter, mono_ptr_class_get,
6246         mono_fnptr_class_get, mono_bounded_array_class_get)
6247         * domain.c (mono_domain_create, mono_domain_free)
6248         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
6249         * image.c (do_mono_image_load, mono_image_close):
6250         Hooked up load-unload profiler events.
6251
6252 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
6253
6254         * domain.c: track statistics about the actual amount of native code
6255         allocated.
6256
6257 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6258
6259         * class.c: the valuetype enumerators don't have the additional
6260         supertypes interfaces.
6261
6262 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6263
6264         * class.c: need more interfaces setup for the IEnumerator<T>
6265         object created for arrays (tests/ienumerator-interfaces.2.cs).
6266
6267 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
6268
6269         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
6270
6271 2007-10-05  Alp Toker  <alp@atoker.com>
6272
6273         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
6274         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
6275         #315863.
6276
6277 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
6278
6279         * verify.c (verify_type_compatibility_full): verification of
6280         compatibility improved, validates correctly non-strict checks between
6281         native int and I4 types different than (unsigned)int32.
6282
6283         * verify.c (do_store_indirect): added, do all verification of
6284         ldind.X opcodes. 
6285
6286         * verify.c (get_load_indirect_mono_type): renamed to
6287         get_indirect_op_mono_type, as it now returns the MonoType for 
6288         ldind.X and stind.X opcodes.
6289
6290 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
6291
6292         * reflection.c: Fix the encoding of generic type definition for
6293         TypeBuilders.
6294
6295         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
6296         mono_image_typedef_or_ref but allows to specify if typespec lookups should
6297         be made. Typespec check is done prior to typeref cache lookup.
6298
6299         * reflection.c (mono_image_typedef_or_ref): now just delegate to
6300         mono_image_typedef_or_ref_full.
6301
6302         * reflection.c (encode_generic_class): encode the generic class
6303         directly instead of calling encode_type.
6304
6305         * reflection.c (encode_type): encode the generic type definition
6306         MonoClass as a generic instantiation.
6307
6308         * reflection.c (create_typespec): cache typespec tokens in
6309         the assembly->typespec cache. Don't create typespec for a generic
6310         instance MonoClass. Create typespec for the generic type defintion.
6311
6312         * reflection.c (create_generic_typespec): encode the generic
6313         class directly instead of calling encode_type.
6314
6315         * reflection.c (mono_image_create_token): encode the generic
6316         type definition not using a typespec for MonoType instances.
6317
6318
6319 2007-10-04  Raja R Harinath  <rharinath@novell.com>
6320
6321         Fix #328812
6322         * class.c (mono_image_init_name_cache): Don't return nested
6323         'protected internal' classes.
6324         (mono_class_from_name_case): Likewise.
6325
6326 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
6327
6328         * icall-def.h, icall.c : get_bundled_machine_config() is now the
6329           common function used by both DefaultConfig in System.dll and
6330           InternalConfigurationHost in System.Configuration.dll.
6331
6332 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6333
6334         * class.c: automatically add to vectors only a few essential explicit
6335         generic interfaces. The rest of the interfaces that arrays should
6336         provide are currently implicitly added (but still not lazily, see the
6337         design in the discussion of bug#325495 for the details of what is
6338         needed for that). Additionally, implicit interfaces are assigned the
6339         same vtable slot as the explicit interfaces (as they are compatible):
6340         this enables huge memory savings since we don't need to instantiate
6341         as many memthods and as large vtables anymore. Also, Since
6342         GetEnumerator<T> returns an instance of a type that is required to
6343         support a similarly large set of interfaces as arrays, we add
6344         implicit interfaces and interface offset sharing support to those
6345         types, too. This change adds all the required interfaces so that
6346         the anonarray.cs test case in the bug report works (we don't add
6347         all the interfaces to arrays of arrays 3-level deep and more because
6348         of the memory requirements explained in the bug and since they are much
6349         less common: the lazy-loading support will enabled them to work, too).
6350
6351 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
6352
6353         * verify.c (merge_stacks): major clean up, all type compatibility
6354         checks are done by verify_type_compatibility. This fix my earlier lack
6355         of understanding of the CLR type system and merge_stacks no longer looks
6356         scary.
6357
6358         * verify.c: fixed some bad spelling.
6359
6360 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
6361
6362         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
6363         a given stack slock.
6364         
6365         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
6366         verify_type_compatibility_full. This removed a near indentical function and fixed
6367         handling of Int32 and IntPtr across all opcodes.
6368
6369 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6370
6371         * class.c: only vectors have the additional generic interfaces.
6372
6373 2007-10-01  Jonathan Chambers <joncham@gmail.com>
6374
6375         * mono-config.c: Use g_strcasecmp instead of
6376         strcasecmp like everywhere else to fix
6377         compilation with MSVC.
6378         
6379         Code is contributed under MIT/X11 license.
6380
6381 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6382
6383         * object.c, object-internals.h: refactored the IMT code to enable
6384         building a single slot at a time and lazily creating the IMT trampolines
6385         and thunks.
6386
6387 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
6390
6391         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
6392         Fixes #328501.
6393         
6394 2007-09-29  Raja R Harinath  <harinath@gmail.com>
6395
6396         * loader.c (method_from_methodspec): Rearrange to avoid
6397         un-necessary exposition.  Don't assert out if the method's
6398         declaring type is a generic type definition.
6399
6400 2007-09-28  Martin Baulig  <martin@ximian.com>
6401
6402         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
6403
6404 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
6405
6406         * class-internals.h: optimize field layout of MonoClass to
6407         requires less cachelines at runtime and save a few bytes on 64 bit
6408         systems.
6409
6410 2007-09-28  Jb Evain  <jbevain@novell.com>
6411
6412         * reflection.c: when encoding type names in custom attributes,
6413         if the type is a closed generic type, its generic arguments
6414         have to be serialized as AssemblyQualifiedName, so that when
6415         they are deserialized, it's possible to re-create them properly.
6416         Fixes #329450.
6417
6418
6419 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6420
6421         * object.c, class-internals.h: added delegate-creation counter.
6422
6423 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
6424
6425         * class.c: cleanup of the code that synthetizes interfaces for
6426         arrays in 2.0: saves quit a bit of corlib mempool memory.
6427         Code to fix bug #325495 ifdeffed out for now until the issues
6428         with memory usage and O(n^2) behaviour are fixed.
6429
6430 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6431
6432         * marshal.c: when possible, do not duplicate the name of the methods
6433         in the method builder and in the generated MonoMethod.
6434
6435 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
6436         * verify.c: added support for type checking ldind_* opcodes.
6437
6438 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
6439
6440         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
6441         which is used to distinguish the fully open instantiation of a TypeBuilder
6442         with the rest. This temporary hack is required to restore the property that
6443         the fully open instantiation is the same type of the generic type definition.
6444
6445         * class-internals.h (mono_generic_class_is_generic_type_definition):
6446         new function as part of the internal API.
6447
6448         * class.c (inflate_generic_type): return NULL when the generic inst is
6449         fully open. The fully open generic type is now the same as the generic type
6450         definition for non TypeBuilder types.
6451
6452         * class.c (mono_generic_class_get_class): removed assert since it is
6453         no longer valid, gklass->cached_class can point to the generic type definition.
6454
6455         * class.c (mono_generic_class_is_generic_type_definition): new.
6456
6457         * metadata.c (mono_generic_class_hash): added is_tb_open field
6458         to the hash calculation.
6459
6460         * metadata.c (free_generic_class): if the generic class is associated
6461         with the generic type definition, its field will come from the mempool and
6462         must not be freed.
6463
6464         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
6465         new, this function identifies the corner case of a TypeBuilder fully open
6466         instantiation.
6467
6468         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
6469         for lookup. Set gclass->cached_class to be the container class in case of
6470         the fully open instantiation of non TypeBuilder types.
6471
6472         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
6473         to compare generic classes.
6474
6475         * reflection.c (method_encode_methodspec): remove assert that
6476         no longer is valid.
6477
6478         * reflection.c (mono_reflection_generic_class_initialize): add
6479         an aditional assert to ensure the proper type is used.
6480
6481 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
6482
6483         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
6484         to enjoy it.
6485
6486 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
6487
6488         * verify.c (push_arg): Fixed support for ldarga
6489         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
6490         MonoType used as first arg in case of instance calls.
6491
6492 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * verify.c: Support for verifying VAR and MVAR types, 
6495
6496 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
6497
6498         * icall.c (ves_icall_get_property_info): Set the reflected type of the
6499         accessors correctly.
6500
6501 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6502
6503         * threads.c: support OSX and other systems in
6504         mono_thread_get_stack_bounds (bug #328026).
6505
6506 2007-09-25  Martin Baulig  <martin@ximian.com>
6507
6508         * mono-debug.h
6509         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
6510
6511 2007-09-24  Martin Baulig  <martin@ximian.com>
6512
6513         * mono-debug.h
6514         (MonoDebugClassEntry): Moved the definition of this struct into
6515         mono-debug.c to make it private.
6516
6517         * mono-debug.c
6518         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
6519         type table per symbol file, we don't need to store the symfile id
6520         any longer.
6521
6522 2007-09-24  Martin Baulig  <martin@ximian.com>
6523
6524         Create one type table per symbol file, since a `MonoClass *' gets
6525         invalid when its image is unloaded.
6526
6527         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
6528         (MonoDebugHandle): Added `type_table'.
6529
6530 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
6531
6532         * mempool.c, mempool.h: added mono_mempool_new_size () API
6533         to be able to specify a smaller initial size for the pool.
6534         Adjusted the code to slowly increase pool size before using
6535         the previous default size.
6536         * image.c: use a small initial size for image mempools.
6537
6538 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
6539
6540         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
6541         Fixes ##320990.
6542
6543         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
6544         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
6545
6546 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
6547
6548         * metadata.c (mono_type_create_from_typespec): Remove an invalid
6549         free. Fixes #327438.
6550
6551 2007-09-21  Raja R Harinath  <harinath@gmail.com>
6552
6553         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
6554         generic instantiations, etc.
6555         <MONO_TYPE_ARRAY>: Likewise.
6556
6557 2007-09-21  Martin Baulig  <martin@ximian.com>
6558
6559         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
6560         these structs were never defined.
6561         (MonoDebugHandle): Removed the `_priv' field, it was never used.
6562
6563 2007-09-21  Martin Baulig  <martin@ximian.com>
6564
6565         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
6566
6567 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
6568
6569         * image.c: removed the guid hash tables: we can get the same info
6570         without the additional memory usage hit (partially fixes also bug #327052).
6571
6572 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
6573
6574         * profiler.h, profiler-private.h, profiler.c: add a new profiler
6575         event to handle unloading methods. After the event is called, the
6576         corresponding MonoMethod* must be considered invalid.
6577         * loader.c (mono_free_method): call the new mono_profiler_method_free
6578         event.
6579
6580 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6581
6582         * domain-internals.h: New flag in MonoJitInfo which marks shared
6583         generic methods.  New hash table (shared_generics_hash) in
6584         MonoDomain to keep track of shared generic methods.  Prototypes
6585         for functions to register and lookup shared generic methods.
6586
6587         * domain.c: Support for registering and looking up shared generic
6588         methods via a hash table (shared_generics_hash) in MonoDomain.
6589
6590         * class-internals.h: New exception to signal failure of shared
6591         compilation of a generic method.  New counters for generics
6592         sharing in MonoStats.
6593
6594 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
6595
6596         * image.c, metadata-internals.h: don't keep a file descriptor open
6597         for loaded assemblies (bug#325988).
6598
6599 2007-09-19  Raja R Harinath  <rharinath@novell.com>
6600
6601         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
6602         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
6603         use the corresponding datatypes.
6604         (type_in_image): Update to changes.
6605         (CleanForImageUserData): Simplify.
6606         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
6607         Avoid quadratic behaviour in handling the "stolen" list by
6608         separating the filter predicate out, and by prepending the stolen
6609         items rather than appending them.
6610         (steal_ginst_in_image): Likewise.
6611         (mono_metadata_clean_for_image): Update to changes.
6612
6613 2007-09-19  Martin Baulig  <martin@ximian.com>
6614
6615         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
6616
6617 2007-09-19  Martin Baulig  <martin@ximian.com>
6618
6619         * mono-debug.c (mono_debug_cleanup): Don't call
6620         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
6621
6622 2007-09-19  Raja R Harinath  <harinath@gmail.com>
6623
6624         Fix crash on 'make run-test' in mcs/errors
6625         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
6626         Avoid more potential allocations in mono_class_from_mono_type.
6627         (ginst_in_image): Update to changes.
6628         (gclass_in_image): Rearrange slightly.
6629
6630 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6631
6632         * class.c (mono_class_init): Move the code that sets up class->methods to 
6633         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
6634
6635         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
6636         canonical instance of an inflated generic signature.
6637         (mono_type_create_from_typespec): Remove an invalid free.
6638
6639         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
6640
6641 2007-09-18  Marek Habersack  <mhabersack@novell.com>
6642
6643         * domain-internals.h: added a declaration of the
6644         mono_assembly_load_full_nosearch internal function.
6645
6646         * assembly.c (mono_assembly_load_with_partial_name): use
6647         mono_try_assembly_resolve return value properly.
6648         (mono_assembly_load_full_nosearch): copied the function body from
6649         mono_assembly_load_full, without the code to invoke assembly
6650         search hooks.
6651         (mono_assembly_load_full): calls the above new function and if the
6652         assembly is not resolved, invokes the search hooks.
6653
6654         * appdomain.c (mono_runtime_init): restore the global postload
6655         assembly search handlers.
6656
6657 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6658
6659         * class.c (mono_class_init): Make sure class->methods and class->properties
6660         are never NULL in the generics case.
6661
6662         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
6663
6664 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6665
6666         * metadata.c (free_generic_class): Disable some code to fix the build.
6667
6668         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
6669
6670         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
6671         from the image mempool.
6672
6673         * metadata.c (free_generic_class): Free more data from the inflated class.
6674
6675         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
6676
6677         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
6678         mempool.
6679         (mono_type_create_from_typespec): Ditto.
6680
6681         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
6682         MonoImage to the caller.
6683         (mono_init_internal): Save the opened image in a global variable.
6684         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
6685
6686         * reflection.c (resolve_object): Fix a leak.
6687
6688         * metadata.c: Fix the freeing of data in the generics caches.
6689         
6690         * metadata.c (free_generic_inst): Comment this out to fix the build.
6691         (free_generic_class): Ditto.
6692
6693         * metadata.c: Free cached generic methods, instantinations and classes when
6694         they are removed from the caches.
6695         (mono_metadata_free_type): Free the type itself.
6696
6697         * class.c: Free the result of mono_class_inflate_generic_type () in a few
6698         places.
6699
6700 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
6701
6702         * boehm-gc.c: restrict managed allocs to __thread supporting
6703         architectures.
6704
6705 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
6706
6707         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
6708         (mono_generic_class_get_class): Fix a leak.
6709
6710         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
6711         mono_metadata_free_type ().
6712         (mono_metadata_inflate_generic_inst): Fix a leak.
6713
6714 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6715
6716         * mono-debug.c (free_header_data): Fix a leak missed earlier.
6717
6718         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
6719         mempool.
6720
6721         * mono-debug.c (mono_debug_close_image): Fix call to 
6722         g_hash_table_remove ().
6723
6724 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
6725
6726         * icall-def.h: redirect all the string ctor to the managed
6727         CreateString () methods.
6728         * string-icalls.c, string-icalls.h: removed dead code for string
6729         ctors and icalls.
6730
6731 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * mono-debug.c: Fix memory leaks.
6734
6735 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6736
6737         * threads-types.h: Implement mono_hazard_pointer_set and 
6738         mono_hazard_pointer_clear macros using do/while(0) to fix
6739         compilation with MSVC.
6740         
6741         Code is contributed under MIT/X11 license.
6742
6743 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6744
6745         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
6746         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
6747
6748 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6749
6750         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
6751         icalls.
6752
6753 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
6754
6755         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
6756         managed-code allocated as well.
6757
6758 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * class.c (mono_class_is_assignable_from): Add support for generic variance.
6761
6762 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
6763
6764         * boehm-gc.c: fixed the build after the AOT changes.
6765
6766 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * wrapper-types.h: Add an ALLOC wrapper type.
6769
6770         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
6771         reference managed allocator methods.
6772
6773 2007-09-12  Marek Safar  <marek.safar@gmail.com>
6774
6775         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
6776         of Type array and not MonoType, a fix suggested by Hari.
6777         
6778 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6779
6780         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
6781         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
6782         
6783         Code is contributed under MIT/X11 license.
6784
6785 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
6786
6787         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
6788
6789 2007-09-12  Marek Habersack  <mhabersack@novell.com>
6790
6791         * image.c (do_mono_image_open): if assembly file fails to open and
6792         MONO_IOMAP is in effect, try to find the path in a
6793         case-insensitive way.
6794
6795         * appdomain.c (mono_runtime_init): do not install postload hooks -
6796         tests show that MS.NET doesn't use anything of that sort to
6797         trigger the AppDomain.AssemblyResolve event.
6798         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
6799         made non-static.
6800         (mono_runtime_init): init portability helpers here.
6801
6802         * assembly.c (mono_assembly_load_with_partial_name): if other   
6803         attempts fail, trigger the AppDomain.AssemblyResolve event handler
6804         to resolve the assembly.
6805
6806         * domain-internals.h: added mono_try_assembly_resolve and marked
6807         it as internal.
6808
6809 2007-09-11  Jb Evain  <jbevain@novell.com>
6810
6811         * object-internals.h (MonoReflectionDynamicMethod): add
6812         a `MonoReflectionType *owner` field. The owner is used
6813         * reflection.c:
6814         (mono_reflection_create_dynamic_method): use the owner of the dynamic
6815         method as the class declaring the dynamic method.
6816         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
6817         dynamic method to the declaring type of the methodbuilder.
6818
6819 2007-09-11  Mark Probst  <mark.probst@gmail.com>
6820
6821         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
6822         rules for calling methods via reflection.
6823
6824 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
6825
6826         * reflection.c (resolve_object): Add support for MonoGenericClass. 
6827         Inflate MonoType's.
6828
6829 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
6830
6831         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
6832         provide a managed method that does fast allocations without needing
6833         a managed->unmanaged transition. Boehm GC implementation currently
6834         enabled for ptrfree objects on sane architectures.
6835
6836 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
6837
6838         * marshal.c, marshal.h: exported a couple of useful functions and
6839         added mono_mb_get_label () to easily handle backward branches.
6840
6841 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
6844
6845 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
6846
6847         * loader.c (find_method): Fixed the regression introduced while
6848         fixing bug #81466.
6849
6850 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
6851
6852         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
6853         well.
6854         
6855         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
6856         icall.c reflection.c: Pass a MonoGenericContext argument to 
6857         mono_lookup_dynamic_token ().
6858
6859         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
6860         #82744.
6861         
6862 2007-09-09  Robert Jordan  <robertj@gmx.net>
6863
6864         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
6865         for generic methods.
6866
6867         * object.c (mono_object_get_virtual_method): Handle generic methods.
6868         Fixes bug #78882.
6869
6870         Code is contributed under MIT/X11 license.
6871
6872 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
6873
6874         * image.c: fix locking in mono_image_load_file_for_image ().
6875
6876 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
6877
6878         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
6879         used only as a cache: added an icall to fill it.
6880
6881 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
6882
6883         * reflection.h: exposed mono_reflection_free_type_info
6884         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
6885         since mono_reflection_bind_generic_parameters makes a copy of it.
6886         * reflection.c (free_type_info): subinfos should be freed.
6887         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
6888         made non static.
6889         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
6890         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
6891         this fixes #82695 and #81726.
6892    
6893
6894 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
6895
6896         * process.h, process.c:  added support for user profile/info in
6897           ProcessStartInfo. For now only Windows works.
6898
6899 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6900
6901         * metadata.c: consider the generic arguments when comparing
6902         signatures (bug #82614).
6903
6904 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6905
6906         * cil-coff.h, image.c: updated assembly loader to cope with the
6907         PE32+ 64 bit file format.
6908
6909 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6910
6911         * assembly.c, class.c, domain.c, loader.c: remove useless
6912         inclusion of cil-coff.h.
6913
6914 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
6915
6916         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
6917         if interface is marked with CoClassAttribute. 
6918    
6919         Code is contributed under MIT/X11 license.
6920
6921 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
6922
6923         * sgen-gc.c: ensure no object from the to space is copied again or finalized
6924         if it's seen twice in major collections.
6925
6926 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6927
6928         * sgen-gc.c: big objects are not copied to the gray area, but they
6929         need to be considered for scanning, too, if they are brought alive
6930         by an object ready for finalizations or a survived one.
6931
6932 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6933
6934         * sgen-gc.c: properly account the number of disappearing links when
6935         they are nullified.
6936
6937 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
6938
6939         * sgen-gc.c: share the code to scan the registered roots between the
6940         different types of collections.
6941
6942 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
6943
6944         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
6945
6946 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
6949         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
6950
6951 2007-08-28  Mark Probst  <mark.probst@gmail.com>
6952
6953         * security-manager.c (mono_security_manager_get_methods):
6954         LinkDemandSecurityException now has 2 arguments instead of 3.
6955
6956 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
6957
6958         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
6959         platforms which need it.
6960
6961 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6962
6963         * sgen-gc.c: unregister thread data structures with a pthread_key_t
6964         dtor.
6965
6966 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
6967
6968         * threads.c: free the thread static data on thread exit.
6969
6970 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
6971
6972         * class.c: walk the hierarchy to find the generic definition for
6973         a class (fixes runtime part of bug #82498).
6974
6975 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
6976
6977         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
6978         ...
6979
6980         * image.c (mono_image_close): Here. Hopefully fixes #82510.
6981
6982 2007-08-24  Mark Probst  <mark.probst@gmail.com>
6983
6984         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
6985
6986 2007-08-24  Robert Jordan  <robertj@gmx.net>
6987
6988         * appdomain.c: don't perform the ':'->';' substitution on Win32.
6989
6990 2007-08-24  Jb Evain  <jbevain@novell.com>
6991
6992         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
6993         for byref types.
6994
6995 2007-08-24  Mark Probst  <mark.probst@gmail.com>
6996
6997         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
6998         #82286.
6999
7000 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
7001
7002         * assembly.c: Fix a warning.
7003         
7004 2007-08-23  Marek Habersack  <mhabersack@novell.com>
7005
7006         * appdomain.c: parse the <runtime> section looking for the probing
7007         element with the 'privatePath' attribute, which sets additional
7008         directories in which the runtime should look for assemblies.
7009
7010 2007-08-23  Robert Jordan  <robertj@gmx.net>
7011
7012         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
7013         Fixes #82499.
7014
7015 2007-08-23  Martin Baulig  <martin@ximian.com>
7016
7017         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
7018         _mono_debug_init_corlib() and remove it from the header file.
7019
7020 2007-08-23  Martin Baulig  <martin@ximian.com>
7021
7022         * mono-debug-debugger.c
7023         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
7024         don't notify the debugger about it.
7025
7026         * mono-debug-debugger.h
7027         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
7028
7029 2007-08-23  Robert Jordan  <robertj@gmx.net>
7030
7031         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
7032         Code is contributed under MIT/X11 license.
7033
7034 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7035
7036         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
7037
7038 2007-08-22  Martin Baulig  <martin@ximian.com>
7039
7040         * mono-debug.c: Store debugging info on a per-domain basis and
7041         free it on domain unload.  Add support for unloading symbol files.
7042
7043         * mono-debug.h
7044         (MonoDebugList): New typedef.
7045         (MonoSymbolTable):
7046         - add `data_tables and `type_table'.
7047         - replace 'symbol_files' and `num_symbol_files' with a
7048           `MonoDebugList *'.
7049         (mono_debug_data_table): Removed.
7050         (mono_debug_list_add): New public function.
7051         (mono_debug_list_remove): New public function.
7052         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
7053         (mono_debug_init_2_memory): Renamed into
7054         mono_debug_open_image_from_memory().
7055         (mono_debug_close_image): New public function.
7056         (mono_debug_domain_create): Likewise.
7057         (mono_debug_domain_unload): Likewise.
7058         (MONO_DEBUGGER_VERSION): Bump to 60.
7059
7060         * mono-debug-debugger.h
7061         (MonoDebuggerEvent):
7062         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
7063         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
7064         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
7065         - rename `THREAD_CREATED' and `THREAD_EXITED' into
7066           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
7067         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
7068           meaning.
7069         (mono_debugger_add_symbol_file): Removed.
7070         (mono_debugger_add_type): Removed.
7071         (mono_debugger_lookup_type): Removed.
7072         (mono_debugger_lookup_assembly): Removed.
7073
7074         * domain.c
7075         (mono_domain_create): Call mono_debug_domain_create().
7076         (mono_init_internal): Call mono_debug_init_corlib().
7077
7078         * assembly.c
7079         (mono_assembly_close): Call mono_debug_close_image().
7080
7081 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7082
7083         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
7084         mmap call.
7085
7086 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
7087
7088         * sgen-gc.c: ensure section->pin_queue_end is initialized
7089         correctly when non pinning objects in the section have been found.
7090
7091 2007-08-22  Marek Habersack  <mhabersack@novell.com>
7092
7093         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
7094         containing a list of directories separated by ':'. MSDN docs say
7095         the directories should be separated with ';'. Part of a bugfix for
7096         bug #81446
7097
7098 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
7099
7100         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
7101         it should MonoType and not MonoClass.
7102
7103 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
7104
7105         * culture-info-table.h : regenerated.
7106
7107 2007-08-20  William Holmes  <billholmes54@gmail.com>
7108
7109         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
7110          to call ReplaceFile Kernel32 on windows or in io-layer.
7111         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
7112         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
7113          as an internal call.
7114
7115         Code is contributed under MIT/X11 license.
7116
7117 2007-08-20  Jb Evain  <jbevain@novell.com>
7118
7119         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
7120         and MONO_EXCEPTION_FIELD_ACCESS.
7121
7122         * debug-helpers.[c|h]: new mono_field_full_name function.
7123
7124 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7125
7126         * class.c: Removed class_security_level() and moved it to
7127         security-core-clr.c.
7128
7129         * security-core-clr.c, security-core-clr.h: class_security_level()
7130         is now public and renamed to mono_security_core_clr_class_level().
7131         It also looks for security attributes in the classes a class is
7132         nested in.
7133
7134 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7135
7136         * security-core-clr.c, security-core-clr.h: CoreCLR security
7137         utility functions.
7138
7139         * Makefile.am: Added security-core-clr.[ch].
7140
7141         * security-manager.c, security-manager.h: Functions and enum for
7142         setting and getting the security mode.
7143
7144         * class.c: CoreCLR security checks.
7145
7146 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7147
7148         * icall-def.h, process.c, process.h: implemented icall to get
7149         user/system processor times.
7150
7151 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7152
7153         * domain.c, threads.c, class-internals.h, domain-internals.h: New
7154         reader-lock-free jit_info_table.
7155
7156 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
7157
7158         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
7159
7160         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
7161
7162         * object-internals.h (MonoException): Add missing _data member.
7163
7164 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
7165
7166         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
7167         checking that only methods with matching qname or fqname are picked
7168         from implemented interfaces.
7169
7170 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
7171
7172         * verify.c (do_newarr):added, do type verification of
7173         newarr ops, push the right value on the eval stack.
7174         * verify.c (mono_method_verify): use do_newarr
7175
7176
7177 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
7178
7179         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
7180         factored the common code into get_boxable_mono_type, which
7181         is now using mono_type_get_full, this fixed byref related tests.
7182
7183 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
7184
7185         * class.c: added mono_type_get_full, this function has the same
7186         behavior of mono_class_get_full but the returned MonoType has
7187         all metadata of the associated token in case of a typespec token.
7188         * class.c: added mono_type_retrieve_from_typespec, used by 
7189         mono_type_get_full to retrieve the token type.
7190         * class.c (mono_class_create_from_typespec): changed to use
7191         mono_type_retrieve_from_typespec.
7192         * class.c (mono_ldtoken): changed to use mono_type_get_full
7193         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
7194         * class-internals.h: exported mono_type_get_full for internal use.
7195
7196 2007-08-16  Jb Evain  <jbevain@novell.com>
7197
7198         * domain.c (supported_runtimes): add entry for
7199         the 'moonlight' runtime version.
7200
7201 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
7202
7203         * verify.c (mono_method_verify): small typo sliped in.  
7204
7205 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
7206
7207         * verify.c (do_unbox_value): added, do type verification of
7208         unboxing ops
7209         * verify.c (mono_method_verify): use do_unbox_value
7210
7211
7212 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
7213
7214         * verify.c (dump_stack_value): fixed typo, was printing string
7215         instead of object on stack.
7216         * verify.c (do_box_value): moved the byref check up as it leads
7217         to invalid code and should be done earlier.
7218         * verify.c: improved error messages for and ldobj
7219
7220 2007-08-15  William Holmes  <billholmes54@gmail.com>
7221
7222         * marshal.c (emit_marshal_custom): Omit the call to 
7223           marshal_native_to_managed when calling native to managed 
7224           and the argument is specified as an out argument.
7225
7226         Code is contributed under MIT/X11 license.
7227
7228 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
7229
7230         * verify.c: fixed the type checks for generics, function pointers and vectors.
7231         Added type verification for ldobj and ldtoken. The verifier
7232         would segfault if header or signature of a method contained references
7233         to non-existant types.
7234
7235 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
7236
7237         * marshal.c (cominterop_get_ccw): Patch from
7238         Bill Holmes to no walk up interface hierarchy. 
7239         All parent methods should be present in the interface for COM.
7240    
7241         Code is contributed under MIT/X11 license.
7242
7243 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
7244
7245         * marshal.c (emit_marshal_com_interface): Patch from
7246         Bill Holmes to handle COM Interfaces as return values
7247         for native->managed calls.
7248    
7249         Code is contributed under MIT/X11 license.
7250
7251 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
7252
7253         * marshal.c (cominterop_get_idispatch_for_object): Implement
7254         for runtime callable wrappers.
7255    
7256         Code is contributed under MIT/X11 license.
7257
7258 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
7259
7260         * pedump.c (main): changed from mono_init to mono_init_from_assembly
7261         so 2.0 types are accessible
7262
7263
7264 2007-08-13  Miguel de Icaza  <miguel@novell.com>
7265
7266         * domain.c (mono_init_internal): Call mono_assembly_load_friends
7267         once we load mscorlib.   Due to the order in which we initialize,
7268         the mono_assembly_load_full routine that loads mscorlib did not
7269         load friends.   We now load it once we load the
7270         mono_defaults.internals_visible_class class. 
7271
7272         * assembly.c: Expose the mono_load_friend_assemblies method.
7273
7274 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
7275
7276         * verify.c: improved the handling of boxing, better
7277         type checking for unary ops and conversion. Fix bug
7278         regarding managed pointer compatibility checking
7279
7280 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
7281
7282         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
7283
7284         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
7285
7286 2007-08-09  Raja R Harinath  <rharinath@novell.com>
7287
7288         * reflection.c (dup_type): Remove.
7289         * class.c (dup_type): Remove.
7290         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
7291         instead of the dodgy 'dup_type'.
7292         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
7293         handle the case where 'dup_type' needed the second argument.
7294
7295 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
7296
7297         * domain.c: Fix a warning.
7298
7299 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
7300
7301         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
7302         checking that methods with the same fqname are not overridden
7303         with a method from an ancestor.
7304
7305 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * threads.c (free_thread_static_data_helper): Avoid a crash if
7308         thread->static_data is not yet set.
7309
7310 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
7311
7312         * marshal.c: Use correct image when emitting
7313         native wrapper for COM calls.
7314    
7315         Code is contributed under MIT/X11 license.
7316
7317 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
7318
7319         * icall-def.h, security.c, security.h :
7320           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
7321
7322 2007-08-07  Martin Baulig  <martin@ximian.com>
7323
7324         * mono-debug-debugger.h
7325         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
7326
7327         * domain.c (mono_domain_free): Call
7328         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
7329
7330 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
7331
7332         * verify.c (check_underflow, check_overflow): error message now returns IL offset
7333         * verify.c (in_same_block): code should test if either offset is inside the clauses
7334         * verify.c (mono_method_verify): push the exception into the eval stack of exception
7335         and filter blocks
7336
7337 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
7338
7339         * image.c (mono_image_close): Fix a leak.
7340
7341         * object.c (mono_runtime_invoke_array): Avoid using alloca.
7342
7343         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
7344
7345 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7346
7347         * domain.c, threads.c, threads-types.h: fix memory retention issue
7348         with thread static variables not being cleared on domain unload.
7349         Reuse thread static slots after domain unload.
7350
7351 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
7352
7353         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
7354         nullable type.
7355
7356         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
7357         now done in mono_runtime_invoke_array.
7358
7359         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
7360         receiver is a nullable type.
7361
7362         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
7363         generic parameter.
7364
7365 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
7366
7367         * marshal.c: Implement COM Objects as return type for 
7368         managed->unmanaged calls. Added Release calls for COM Object
7369         out/return values in managed->unmanaged calls.
7370
7371         Code is contributed under MIT/X11 license.
7372
7373 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
7374
7375         * threads.h, threads-type.h: move the hazard pointer declarations
7376         to the private header.
7377
7378 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7379
7380         * file-io.c, appdomain.c: memory leak fixes.
7381
7382 2007-08-02  Dick Porter  <dick@ximian.com>
7383
7384         * socket-io.c
7385         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
7386         SO_REUSEADDR setting into io-layer/sockets.c.
7387
7388 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
7389
7390         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
7391         from Object when called on a generic parameter. Fixes #82211.
7392
7393 2007-08-01  Dick Porter  <dick@ximian.com>
7394
7395         * file-io.c (convert_share): Test FileShare values bit-by-bit.
7396         Fixes bug 79250 yet again.
7397
7398 2007-07-30  Martin Baulig  <martin@ximian.com>
7399
7400         Merged the `debugger-dublin' branch.
7401
7402         * mono-debug.h
7403         (MonoDebugDataTable): New typedef.
7404         (MonoDebugMethodAddressList): New typedef.
7405         (MonoDebugWrapperData): Removed.
7406         (MonoDebugSymbolTable): Removed `current_data_table',
7407         `current_data_table_size', `current_data_table_offset'.
7408         (MonoDebugDataItemType): Moved into mono-debug.c.
7409         (MonoDebugMethodJitInfo): Remove `address'.
7410         (mono_debug_data_table): New global variable.
7411         (mono_debug_lookup_method_addresses): New public function.
7412         (mono_debug_find_method): Take a `MonoMethod *', not a
7413         `MonoDebugMethodInfo *'.
7414
7415         * mono-debug.c: Drop support for the old symbol tables.
7416
7417 2007-06-28  Martin Baulig  <martin@ximian.com>
7418
7419         * mono-debug.c (mono_debug_debugger_version): New public variable.
7420
7421 2007-07-31  William Holmes  <billholmes54@gmail.com>
7422
7423         * metadata.c Changed mono_type_create_from_typespec to not insert
7424           the type into the hash map until after
7425           do_mono_metadata_parse_type has completed.
7426         Fixes Bug #82194
7427         Code is contributed under MIT/X11 license.
7428
7429 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
7430
7431         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
7432         generic parameter. Fixes #82211.
7433
7434 2007-07-27  Jb Evain  <jbevain@novell.com>
7435
7436         * pedump.c (dump_metadata, dump_metadata_header): dump
7437         versions contained in the metadata header.
7438
7439 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
7440
7441         * threads.c: register small_id_table with the GC.
7442
7443 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7444
7445         * threads.c, threads.h, class-internals.h, object-internals.h:
7446         Hazard pointers, to be used by lock-free parallel algorithms.
7447
7448 2007-07-26  Dick Porter  <dick@ximian.com>
7449
7450         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
7451         routine on non-windows platforms, as I've not managed to think of
7452         a non-kludgy way of doing this.  Finishes off bug 78739.
7453
7454 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
7455
7456         * object.c: properly setup interface_bitmap in proxy vtables.
7457
7458 2007-07-25  Marek Habersack  <mhabersack@novell.com>
7459
7460         * appdomain.c (get_shadow_assembly_location): do not use TickCount
7461         to create unique shadow copy target directories, use the domain's
7462         serial number instead. Each domain gets a unique target directory
7463         that way.
7464
7465         * domain.c (mono_domain_create): added code to increment domain
7466         shadow copy serial number and cache the value in the current
7467         domain structure.
7468
7469         * domain-internals.h (struct _MonoDomain): added a new field -
7470         shadow_serial to hold the serial number used in generation of
7471         shadow-copy directories. This is to make sure that the directory
7472         name is unique for each and every domain created. We avoid a race
7473         condition with overriding assemblies already in use by other app
7474         domains.
7475
7476 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
7477
7478         * class.c (mono_bounded_array_class_get): fixed memory leak when 
7479         binding generic parameters.
7480
7481 2007-07-24  Raja R Harinath  <rharinath@novell.com>
7482
7483         * metadata.c (do_mono_metadata_parse_generic_class): Use
7484         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
7485         error.
7486
7487 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7488
7489         * loader.c, class-internals.h, reflection.c: removed the per-method
7490         generics hashtable: we use the global one through the call of
7491         mono_class_inflate_generic_method ().
7492
7493 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
7494
7495         * class.c, metadata.c, class-internals.h: introduce yet another
7496         generics global cache for inflated methods (fixes 98% of the perf
7497         issue in bug #81806).
7498
7499 2007-07-23  Raja R Harinath  <rharinath@novell.com>
7500
7501         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
7502         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
7503         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
7504         return a MonoGenericInst containing (a copy) of those types.
7505         (mono_metadata_inflate_generic_inst): Update to changes.
7506         (mono_metadata_parse_generic_inst): Likewise.
7507         (mono_get_shared_generic_inst): Likewise.
7508         * reflection.c (mono_class_bind_generic_parameters): Likewise.
7509         (mono_reflection_bind_generic_method_parameters): Likewise.
7510         * metadata-internals.h: Likewise.
7511         * icall.c (free_generic_context): Kill.
7512         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
7513
7514         * reflection.c (reflection_methodbuilder_to_mono_method): Use
7515         mono_metadata_type_dup.
7516         * marshal.c (mono_mb_create_method): Likewise.
7517
7518         * metadata.c (mono_metadata_type_dup): Rename from
7519         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
7520         MonoImage.  Handle a few more cases, esp. when no mempool is given.
7521         * marshal.c, metadata-internals.h: Update to changes.
7522
7523 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
7524
7525         * class.c: fixed a small leak for array classes and removed warning.
7526
7527 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * loader.c (mono_method_get_param_token): Make this work on generic methods.
7530         Return 0x8000000 for return parameters. Fixes #82161.
7531
7532 2007-07-21  Marek Habersack  <grendello@gmail.com>
7533
7534         * appdomain.c (get_shadow_assembly_location): append the current
7535         ticks value to the path. Avoids overwriting the same assemblies by
7536         several threads at the same time.
7537
7538 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
7539         and Raja R Harinath  <rharinath@novell.com>
7540
7541         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
7542         Simplify slightly.
7543         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
7544         property for testing if a method is a generic method definition.
7545
7546 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
7547
7548         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
7549
7550 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
7551
7552         * verify.c: used function from private branch, reverted to the one in class.h 
7553
7554 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
7555
7556         * verify.c: a typo slipped in and the code wont compile
7557
7558 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
7559
7560         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
7561         disabled box instruction as it is doing the wrong thing
7562         improved stack dump messages, now it is easier to debug type related issues
7563
7564
7565 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
7566
7567         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
7568
7569 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
7570
7571         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
7572         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
7573         grouped with class and valuetype. This change will simply 
7574         the code as it should be handled just like unmanaged pointers.
7575
7576 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7577
7578         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
7579
7580 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
7581
7582         * verify.c: several stack merge issues fixed, reference comparisons now
7583         check the type size. strict type check now works correctly.
7584         added more uses of IS_MANAGED_POINTER macro.
7585         fixed issues pointed by running the test suite against .net.
7586         
7587
7588 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7589
7590         * class.c, loader.c, class-internals.h: Removed the
7591         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
7592         defines.
7593
7594         * icall.c: Better error checking in some internal reflection
7595         methods.
7596
7597 2007-07-18  William Holmes  <billholmes54@gmail.com>
7598
7599         * filewatcher.c : removed unused variable 'filename' in 
7600           ves_icall_System_IO_FSW_SupportsFSW
7601
7602 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7603
7604         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
7605         obsolete, removed.
7606
7607 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7608
7609         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
7610         
7611         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
7612
7613 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7614
7615         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
7616         Implement generics support.
7617         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
7618
7619         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
7620         type_args and method_args arguments.
7621         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
7622         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
7623         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
7624
7625 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
7626
7627         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
7628           It adds a rootimage parameter to mono_reflection_get_type_internal,
7629           adds new function mono_reflection_get_type_with_rootimage and use
7630           the rootimage to resolve the types instead of the current image
7631
7632 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
7633
7634         * culture-info-table.h: Forgot to update after r78304.
7635
7636 2007-07-13  Raja R Harinath  <rharinath@novell.com>
7637
7638         * class.c (mono_class_is_open_constructed_type)
7639         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
7640
7641 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
7642
7643         * class.c (mono_bounded_array_class_get):  method fails if used with
7644         an incomplete TypeBuilder enum (no basetype field), fixed it by 
7645         avoiding calculating the size for such array as it cannot be instantiated.
7646         Fix bug #82015
7647
7648 2007-07-12  Raja R Harinath  <rharinath@novell.com>
7649
7650         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
7651         field.
7652         * metadata.c, reflection.c: Update to changes.
7653
7654 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
7655
7656         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
7657         mono_class_is_valid_enum, they are used to valide a enum when loading.
7658         * reflection.c: used new functions to throw TypeLoadException when and
7659         invalid enum is build with TypeBuilder. Fixes #82018
7660   
7661 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
7662
7663         * object.c: forgot commit of mono_class_setup_methods () to access
7664         iface->methods.
7665         * object-internals.h: added a few more handy fields to
7666         MonoIMTCheckItem.
7667
7668 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
7671         iface->methods.
7672
7673 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
7674
7675         * class-internals.h, object-internals.h, object.c: IMT-based
7676         interface invocation core from Massimiliano Mantione
7677         (massi@ximian.com) with a reworked arch-specific interface,
7678         bsearch implementation and a few bugfixes and memory savings by me.
7679
7680 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * class.c (mono_class_create_from_typedef): mono would segfault if 
7683         an enum did not have a __value field. It now throws a TypeLoadException
7684         for such cases. Fix bug #82022
7685
7686 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
7689
7690 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7691
7692         * class.c (mono_class_init): If a class is already inited but has
7693         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
7694
7695 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7696
7697         * class.c: Properly handle the case of an unimplemented interface
7698         method.  Fixes: 81673.
7699
7700 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7701
7702         * class-internals.h, object.c: cleanup patch from massi: use
7703         MonoVTable->interface_bitmap since the vtable interfaces offset array
7704         is going away.
7705
7706 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
7709         GetMDStreamVersion icall instead.
7710
7711 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7712
7713         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
7714         not use mono_dl_build_path() with a full library name: makes
7715         fallbacks to libgaim and libfam work.
7716
7717 2007-07-06  William Holmes  <billholmes54@gmail.com>
7718
7719         * assembly.c: Added a continue statement in probe_for_partial_name when
7720          parse_assembly_directory_name fails.  Fixes : 82002
7721
7722 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
7725         and added a verification  for TYPEDBYREF.
7726         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
7727         make native int interchangeable with int32 and some small cleanup and formating.
7728         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
7729         handle byref of byref.
7730         * verify.c (push_local): handle byref of byref.
7731         * verify.c (do_binop): invalid mix of values is unverifiable
7732         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
7733         added visibility checks
7734         * verify.c (field related method): added visibility checks
7735         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
7736
7737 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
7738
7739         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
7740         string.
7741
7742 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * profiler.c (mono_profiler_load): Fix an off-by-one error.
7745
7746         * marshal.c (emit_marshal_string): When returning a string from managed code,
7747         allways make a copy even for unicode strings. Fixes #81990.
7748
7749 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
7750
7751         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
7752         of byref generic inst types (bug #81997).
7753
7754 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
7757         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
7758
7759 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
7760
7761         * marshal.c (emit_marshal_string): Add support for unicode strings in
7762         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
7763
7764 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
7765
7766         * verify.c: field load/store are now verified, missing only access checks now
7767
7768 2007-06-28  Martin Baulig  <martin@ximian.com>
7769
7770         * mono-debug.c (mono_debug_debugger_version): New public variable.
7771
7772 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
7773
7774         * locales.c: When constructing DateTimeFormat or NumberFormat for
7775         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
7776         MonoCultureInfo contructed from the current locale is always
7777         read-only and has UseUserOverride set to true. All MonoCultureInfo
7778         instances returned for GetCultures have both IsReadOnly and
7779         UseUserOverride set to true. Fixes part of bug #81930.
7780
7781 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
7782
7783        * icall-def.h: Update System.__ComObject icalls
7784        * marshal.c: Avoid managed transition (and object creation)
7785        when looking up COM interface in RCW.
7786        * marshal.h: Ditto.
7787        
7788        Code is contributed under MIT/X11 license.
7789
7790 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
7791
7792         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
7793         to avoid crashes during assembly unloading.
7794
7795 2007-06-22  Raja R Harinath  <rharinath@novell.com>
7796
7797         Fix MethodInfo.IsGenericMethodDefinition
7798         * reflection.c (mono_reflection_bind_generic_method_parameters):
7799         Rearrange code to ensure we always uses a generic method definition.
7800         * class.c (mono_class_inflate_generic_method_full): Set
7801         'generic_container' field only for generic method definitions.
7802         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
7803         Use presense of 'generic_container' field as indication of being a
7804         generic method definition.
7805
7806 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
7807
7808         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7809
7810         * object-internals.h: Reflect changes in the layout of the managed Delegate
7811         class.
7812         
7813         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
7814         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
7815         runtime memory used by the dynamic method. Fixes #77146.
7816
7817 2007-06-21  Dick Porter  <dick@ximian.com>
7818
7819         * file-io.h: 
7820         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
7821         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
7822         81767.
7823
7824 2007-06-21  Raja R Harinath  <rharinath@novell.com>
7825
7826         * reflection.c (method_encode_methodspec): Add a tripwire.
7827         * class.c (inflate_generic_type): The fully open generic type is
7828         not the same as the generic type definition.
7829
7830 2007-06-21  Martin Baulig  <martin@ximian.com>
7831
7832         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
7833
7834         * mono-debug-debugger.h
7835         (MonoDebuggerBreakpointInfo): Removed.
7836         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
7837         (mono_debugger_remove_breakpoint): Likewise.
7838         (mono_debugger_breakpoint_callback): Likewise.
7839         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
7840
7841 2007-06-21  Raja R Harinath  <rharinath@novell.com>
7842
7843         * metadata.c (mono_metadata_lookup_generic_class): The fully open
7844         generic type is not the same as the generic type definition.
7845         * class.c (mono_generic_class_get_class): Likewise.
7846
7847 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
7848
7849         * icall.c: The second argument to 
7850         System.Reflection.MethodBase.GetMethodFromHandleInternalType
7851         is a MonoType not a MonoClass.
7852
7853 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
7854
7855         * verify.c: support for function pointers in the verifier
7856
7857 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
7858
7859         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
7860
7861 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
7862
7863         * assembly.c: removed Mono.Data.SqliteClient from the list of
7864         forward-compatible assemblies as it breaks the ABI (bug #81899).
7865
7866 2007-06-19  Raja R Harinath  <rharinath@novell.com>
7867
7868         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
7869         lookup/update with the loader lock.
7870         * reflection.c (mono_class_bind_generic_parameters): No need to
7871         protect mono_metadata_lookup_* with the loader lock.
7872         * class.c (inflate_generic_type): Likewise.
7873         
7874         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
7875         on a generic instantiated type.
7876
7877 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
7878
7879         *verify.c: produce meanfull error messages on verification error
7880         *verify.c: fixed some cases of verification errors reported as validation errors
7881         *pedump.c: fixed the error name array, now it shows validation errors properly
7882         *verify.h: fixed the contant that should be used for verification errors
7883
7884 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7885
7886         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
7887         for bug #77596, 81858 and 80743 (generics data structures on domain
7888         unload).
7889
7890 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7891
7892         Avoid allocating 'MonoGenericContext' on the heap.
7893         * class-internals (_MonoMethodInflated::context): Make field
7894         inline, not a pointer.
7895         * loader.c (method_from_methodspec): Allocate 'new_context' on the
7896         stack.  Use the context embedded within the inflated method as the
7897         hash key, rather than 'new_context'.
7898         * class.c (inflate_generic_context): Simplify.  Return a struct
7899         rather than allocating on the heap.
7900         (mono_class_inflate_generic_method_full): Update to changes.  Now,
7901         doesn't salt away a copy of the context -- simplifying the
7902         lifetime rules of a 'MonoGenericContext *'.
7903         (mono_method_get_context): Return pointer to embedded context.
7904         (setup_generic_array_ifaces): Allocate temporary context on stack.
7905         * reflection.c (inflate_mono_method): Likewise.
7906         (mono_reflection_bind_generic_method_parameters): Likewise.
7907         Use the context embedded within the inflated method as the hash key.
7908
7909         Avoid a source of allocation of 'MonoGenericContext'.
7910         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
7911         and 'cached_context' fields into embedded 'MonoGenericContext' field.
7912         * class.c: Update to changes.
7913         (mono_generic_class_get_context): Simplify drastically.  Now just
7914         returns a pointer to the field.
7915         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
7916         argument as a const pointer.
7917         (mono_metadata_generic_context_equal): Likewise.
7918         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
7919         Update to changes.
7920
7921 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
7922
7923         * verify.c improved the handling of brtrue/brfalse, factored out common code
7924
7925 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7926
7927         Kill MonoGenericMethod.
7928         * class-internals.h (MonoGenericContext::method_inst): Rename from
7929         'gmethod' and convert to a MonoGenericInst.
7930         (MonoGenericMethod): Remove.
7931         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
7932         * loader.c (method_from_methodspec): Update to changes.  Use a
7933         MonoGenericContext as the key to the hashtable.
7934         * metadata.c (mono_metadata_generic_context_equal): Rename from 
7935         'mono_metadata_generic_method_equal' and take MonoGenericContext.
7936         (mono_metadata_generic_context_hash): Likewise from
7937         'mono_metadata_generic_method_hash'.  Change hash function.
7938         (mono_metadata_load_generic_params): Update to changes.
7939         (mono_get_shared_generic_method): Remove.
7940         * metadata-internals.h (mono_get_shared_generic_method): Remove.
7941         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
7942         (inflate_generic_context): Likewise.
7943         (mono_class_inflate_generic_method_full): Likewise.
7944         (setup_generic_array_ifaces): Likewise.
7945         (mono_class_create_from_typespec): Likewise.
7946         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
7947         (method_encode_methodspec): Update callsite.
7948         (reflection_methodbuilder_to_mono_method): Update to changes.
7949         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
7950         MonoGenericContext as the key to the hashtable.
7951         (inflate_mono_method): Update to changes.
7952
7953         * class-internals.h (MonoGenericMethod::container): Remove.
7954         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
7955
7956 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
7957
7958         * profiler-private.h, profiler.c, profiler.h: added API to profile
7959         exception events.
7960
7961 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
7962
7963         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
7964
7965 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
7966
7967         * verify.c: method invocation is now validated, now we verify parameter types on stack.
7968         Fixed overflow and underflow not aborting the verification process.
7969
7970 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7971
7972         * class-internals.h (MonoStats): Added stats entries for dynamic
7973         code allocations.
7974
7975 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
7976
7977         * loader.c (mono_free_method): Free header->locals and header->clauses.
7978
7979         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
7980         dynamic case.
7981
7982         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
7983
7984         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
7985
7986 2007-06-12  Raja R Harinath  <rharinath@novell.com>
7987
7988         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
7989         the tables.
7990
7991 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
7992
7993         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
7994
7995 2007-06-11  Raja R Harinath  <harinath@gmail.com>
7996
7997         MonoGenericMethod on a diet
7998         * class-internals.h (_MonoMethodInflated::reflection_info): Move
7999         here ...
8000         (_MonoGenericMethod::reflection_info): ... from here.
8001         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
8002         Update to changes.
8003         * reflection.c (inflate_mono_method): Likewise.
8004         (mono_reflection_bind_generic_method_parameters): Likewise.
8005
8006 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
8007
8008         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
8009         *verify.c: factored long ldarg forms to share code with short forms
8010
8011 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
8012
8013         *verify.c: fixed code formating factored some duplicate code
8014         into a new function
8015
8016         *verify.h: fixed binary incompatibility introduced earlier
8017
8018         *pedump.c: fixed formating
8019
8020 2007-06-11  Raja R Harinath  <harinath@gmail.com>
8021
8022         Fix assertion when disassembling Mono.C5.dll
8023         * loader.c (method_from_methodspec): Avoid inflating a method
8024         twice with the same context.  If the methodref is inflated, use
8025         the declaring method instead.
8026
8027         * class.c (mono_class_from_generic_parameter): Fix case similar to
8028         bug #81830 handled below, but for method containers.
8029
8030 2007-06-10  Raja R Harinath  <harinath@gmail.com>
8031
8032         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
8033         get_shared_generic_class.  Directly inflate the instance.
8034         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
8035         (inflate_generic_class): Delete.
8036         (get_shared_generic_class): Delete.  Move setting of
8037         'cached_class' and 'cached_context' ...
8038         * metadata.c (mono_metadata_lookup_generic_class): ... here.
8039
8040         * metadata.c (mono_metadata_lookup_generic_class): Change
8041         signature to take the components of a MonoGenericClass rather than
8042         an allocated MonoGenericClass.  Change semantics to be intern-like.
8043         * reflection.c (mono_class_bind_generic_parameters): Update to
8044         changes.  Make locking region tighter.
8045         * class.c (inflate_generic_class): Update to changes.
8046         (get_shared_generic_class): Likewise.
8047         * metadata-internals.h: Likewise.
8048
8049         * reflection.c (mono_class_bind_generic_parameters): Take and
8050         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
8051         (mono_reflection_bind_generic_parameters): Use
8052         'mono_class_bind_generic_parameters' rather than duplicate the code.
8053         * class.c (mono_bounded_array_class_get): Update to changes.
8054         * object-internals.h: Likewise.
8055
8056         * reflection.c (mono_class_bind_generic_parameters): Only support
8057         parameterizing generic type definitions.  Remove support for other
8058         open types.
8059
8060 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
8061
8062         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
8063
8064         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
8065         in the dynamic case.
8066
8067 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
8068
8069         * threads.c: When cleaning up thread, reset the Background bit.
8070         Fixes bug #81720.
8071
8072 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
8073
8074        * metadata.c: Move variable declarations to top of scope.
8075        * verify.c: Move variable declarations to top of scope.
8076
8077        Code is contributed under MIT/X11 license.
8078
8079 2007-06-08  Raja R Harinath  <rharinath@novell.com>
8080
8081         * reflection.c (mono_class_bind_generic_parameters): Replace
8082         open-coded loop with mono_metadata_inflate_generic_inst.
8083
8084         * class.c (get_shared_generic_class): Don't call
8085         mono_get_shared_generic_inst.  Use the container's own
8086         'class_inst'.
8087
8088         * metadata.c (mono_metadata_load_generic_params): Move
8089         initialization of 'context' field here from ...
8090         * class.c (mono_class_create_from_typedef): ... here, and ...
8091         * loader.c (mono_get_method_from_token): ... here.
8092
8093         * class.c (get_shared_generic_class): Rename from
8094         mono_get_shared_generic_class and make static.
8095         (mono_get_shared_generic_inst): Move to metadata.c.
8096         * loader.c (mono_get_shared_generic_method): Likewise.
8097         * class-internals.h, metadata-internals.h: Update to changes.
8098
8099         Fix #81830
8100         * class.c (mono_class_from_generic_parameter): Don't assume a
8101         generic container owner exists.  Generic containers from monodis
8102         don't have any.
8103
8104 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
8105
8106         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
8107         * verify.h: new typedefs to returns the non-verifiable status
8108         * verify.c: initial implementation of generics, stack merging and object compatibility check
8109
8110 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8111
8112         * class.c, image.c, class-internals.h (MonoImage): class_cache is
8113         a MonoInternalHashTable again (fixed bug in internal hash table
8114         code).
8115
8116 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8117
8118         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
8119         MonoInternalHashTable again (fixed bug in internal hash table
8120         code).
8121
8122 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8123
8124         * class.c, image.c, class-internals.h, domain.c,
8125         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
8126         changes.  Have to figure out what makes them break the SWF
8127         regression.
8128
8129 2007-06-04  Mark Probst  <mark.probst@gmail.com>
8130
8131         * class.c, image.c, class-internals.h (MonoImage): class_cache is
8132         a MonoInternalHashTable now.
8133
8134 2007-06-04  Mark Probst  <mark.probst@gmail.com>
8135
8136         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
8137         MonoInternalHashTable now.
8138
8139 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
8140
8141         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
8142         invoke_impl code.
8143
8144         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
8145
8146         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
8147         dependent trampoline.
8148
8149         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8150
8151         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
8152
8153 2007-05-29  Robert Jordan  <robertj@gmx.net>
8154
8155         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
8156
8157 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
8160
8161 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
8162
8163        * marshal.c: Fix interface lookup loops for
8164        cominterop_get_com_slot_for_method and 
8165        cominterop_get_method_interface. Only need to lookup
8166        if type is a class, else use interface type method is on.
8167
8168        Code is contributed under MIT/X11 license.
8169
8170 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
8171
8172         * reflection.c: HasSecurity can be present even if no specially 
8173         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
8174         SecurityAttribute). Fix CAS regression tests on buildbot.
8175
8176 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
8177
8178        * appdomain.c: Add configure checks for header files.
8179        * image.c: Add configure checks for header files.
8180        * file-io.c: Add configure checks for header files.
8181        * debug-mono-symfile.c: Add configure checks for header files.
8182        * threadpool.c: Add configure checks for header files.
8183        * console-io.c: Add configure checks for header files.
8184        * profiler.c: Add configure checks for header files.
8185        * rawbuffer.c: Add configure checks for header files.
8186        * icall.c: Add configure checks for header files.
8187        * rand.c: Add configure checks for header files.
8188        * socket-io.c: Add configure checks for header files.
8189
8190        Code is contributed under MIT/X11 license.
8191
8192 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
8193
8194         * reflection.c (mono_custom_attrs_from_builders): Remove the 
8195         assertion as it breaks the build.
8196         
8197         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
8198
8199         * reflection.c (lookup_custom_attr): Make a copy here too.
8200
8201         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
8202         dynamic images.
8203
8204         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
8205         images.
8206
8207         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
8208         info.
8209
8210 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
8211
8212         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
8213         (load_cattr_value): Ditto.
8214
8215 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
8216
8217         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
8218
8219 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
8220
8221         * threads.c: In "start_wrapper", set apartment_state to MTA if
8222         apartment_state is Unknown and we're running on 2.0 profile or
8223         higher.
8224         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
8225         to main method, then set apartment_state to Unknown on 1.0 profile,
8226         and MTA on 2.0 profile.
8227
8228 2007-05-16  Jb Evain  <jb@nurv.fr>
8229
8230         * class-internals.h (MonoDefaults): Add an attribute_class and
8231           customattribute_data_class.
8232         * domain.c (mono_init_internal): Populate them.
8233         * reflection.c: Use them to remove duplicates. Make a vew
8234         MonoClass variables `static'.
8235
8236 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
8237
8238         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
8239         step in implementing IMT, so that all isinst checks now can go
8240         through the bitmap.
8241         This was needed because vtables for TransparentProxy need to look
8242         like the vtable of the "target" class, so they need to point to
8243         its interface bitmap directly.
8244
8245         * object.c: inside "mono_class_create_runtime_vtable" and
8246         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
8247
8248 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
8249
8250         * object-internals.h
8251           culture-info.h : added territory field in MonoCulture and
8252           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
8253         * locales.c : fill territory field above too.
8254         * culture-info-table.h : regenerated.
8255
8256 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
8257
8258         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
8259         Fixes #81599.
8260
8261 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
8262
8263         * object.c: Always initialize apartment, even if 
8264         there is no custom attributes on entry point.
8265         
8266         Code is contributed under MIT/X11 license.
8267
8268 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
8269
8270         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
8271         * metadata.c: If no encoding is set, check for unicode
8272         on class.
8273         
8274         Code is contributed under MIT/X11 license.
8275
8276 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
8277
8278         * threads.c: Handle if mono_thread_current returns NULL 
8279         
8280         Code is contributed under MIT/X11 license.
8281
8282 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
8283
8284         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
8285         in start_wrapper. Added mono_thread_init_apartment_state and
8286         mono_thread_cleanup_apartment_state.
8287         * object.c: Initialize thread apartment state on main thread
8288         by checking for STAThreadAttribute on entry point.
8289         * object-internals.h: Add apartment_state field to MonoThread.
8290         * threads-types.h: Add unmanaged definition of 
8291         System.Threading.ApartmentState, MonoThreadApartmentState.
8292         
8293         Code is contributed under MIT/X11 license.
8294         
8295 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
8296
8297         * class.c: Fix windows build.
8298         * class-internals.h: Fix windows build.
8299         
8300         Code is contributed under MIT/X11 license.
8301
8302 2007-05-08  Robert Jordan  <robertj@gmx.net>
8303
8304         * process.c (CreateProcess_internal):
8305         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
8306         .CreateNoWindow was specified. Fixes #81496.
8307
8308 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
8309
8310         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
8311         step in implementing IMT, replaced it with two compact arrays
8312         (interfaces_packed and interface_offsets_packed) and a bitmap that
8313         is used for isinst checks (interface_bitmap).
8314
8315         * class.c: (compare_interface_ids): compare function to pass to
8316         bsearch when looking for an interface with a given id.
8317         (mono_class_interface_offset): reimplemented using bsearch on
8318         interfaces_packed, getting the offset from interface_offsets_packed.
8319         (print_implemented_interfaces): utility debugging function.
8320         (setup_interface_offsets): reworked to initialize interfaces_packed,
8321         interface_offsets_packed and interface_bitmap.
8322
8323         * object.c: replaced all accesses to "MonoClass.interface_offsets"
8324         with uses of interfaces_packed and interface_offsets_packed.
8325
8326 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
8327
8328         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
8329         mono_class_interface_offset prototype to wrap all accesses to
8330         "MonoClass.interface_offsets".
8331
8332         * class.c: Implemented mono_class_interface_offset, and wrapped all
8333         accesses to "MonoClass.interface_offsets".
8334
8335         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
8336         "MonoClass.interface_offsets".
8337
8338 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
8339
8340         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
8341         GetMethodFromHandle overloads (bug #78637).
8342
8343 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
8344
8345         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
8346         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
8347
8348 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
8349
8350         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
8351         #81498.
8352
8353         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
8354         gracefully.
8355         (mono_custom_attrs_from_index): Ditto.
8356
8357         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
8358         Fixes #81501.
8359
8360 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
8361
8362         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
8363         is now allocated from a mempool.
8364
8365 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
8366
8367         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
8368         caller holds threads_lock, leading to deadlocks. Fixes #81476.
8369
8370 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
8371
8372         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
8373         mono_loader_clear_error () too late. Fixes #81463.
8374
8375 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
8376
8377         * culture-info-table.h : regenerated.
8378
8379 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
8382         is missing.
8383
8384 2007-04-25  Dick Porter  <dick@ximian.com>
8385
8386         * Makefile.am: Put the mingw enforced-optimisation back into the
8387         PLATFORM_WIN32 section.
8388
8389 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
8392         patch.
8393
8394         * image.c (mono_image_load_module): New API function to load a module reference.
8395
8396         * image.c (load_modules): Load modules lazily. Fixes #80812.
8397
8398         * class.c (mono_class_from_typeref): Use mono_image_load_module.
8399         
8400         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
8401
8402         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
8403         to mono_image_load_module_dynamic.
8404
8405 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
8406
8407         * marshal.c: Fix calling convention for CCW on non-windows
8408         platforms. STDCALL on windows, CDECL everywhere else to work 
8409         with XPCOM and MainWin COM.
8410         
8411         Code is contributed under MIT/X11 license.
8412
8413 2007-04-23  Martin Baulig  <martin@ximian.com>
8414
8415         Fix #80969.
8416
8417         * loader.c
8418         (method_from_memberref): Added `gboolean *used_context' argument.
8419         (mono_get_method_from_token): Likewise.
8420         (mono_get_method_full): Don't insert the method in the cache when
8421         `used_context' is true.
8422
8423 2007-04-23  Raja R Harinath  <rharinath@novell.com>
8424
8425         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
8426
8427         * reflection.c (mono_reflection_bind_generic_parameters): Don't
8428         create new MonoTypes for returned types.
8429         * class.c (mono_generic_class_get_class): Export mono-internal.
8430         * class-internals.h: Update to changes.
8431
8432 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
8433
8434         * threadpool.c, threadpool.h, icall-def.h: patch from
8435         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
8436
8437 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
8440         
8441         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
8442
8443         * threads.c (mono_thread_get_stack_bounds): New helper function.
8444
8445         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
8446         Correctly compute stack bounds when attaching. Fixes #81394.
8447
8448 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
8449
8450         * reflection.c: fix handling of doubles in custom attributes
8451         for the arm-fpa format (bug #81368).
8452
8453 2007-04-18  Raja R Harinath  <rharinath@novell.com>
8454
8455         * reflection.c (assembly_add_win32_resources): Mildly relax an
8456         bounds check to let the end pointer point just past the end of the
8457         allocated buffer.  (may fix #81384)
8458
8459 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
8460
8461         * culture-info-table.h : regenerated.
8462
8463 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
8464
8465         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
8466         the thread is aborted early.
8467
8468 2007-04-05  Dick Porter  <dick@ximian.com>
8469
8470         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
8471         FindFirstFile()/FindNextFile() to find entries.  This lets the
8472         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
8473         81038.
8474
8475         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
8476         the parameters of
8477         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
8478
8479 2007-04-04  Martin Baulig  <martin@ximian.com>
8480
8481         * debug-helpers.c
8482         (mono_method_desc_full_match): Add support for nested classes.
8483
8484 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
8485
8486         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
8487
8488 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
8489
8490         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
8491         waiting for too many threads.
8492
8493 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
8494
8495         * environment.c: Fix return value check on uname so we can get the 
8496         executing version on Solaris operating systems.
8497
8498 2007-03-28  Jb Evain  <jbevain@gmail.com>
8499
8500         * class.c (mono_type_get_name_recurse): Complete the
8501         fix for the creation of assembly qualified names for
8502         pointer types. Fixes #81208.
8503
8504 2007-03-27  Dick Porter  <dick@ximian.com>
8505
8506         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
8507         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
8508         changed.
8509
8510         * threads.c
8511         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
8512         the value of ReleaseMutex().
8513
8514 2007-03-27  Dick Porter  <dick@ximian.com>
8515
8516         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
8517         in little-endian order, not network endian, so must be converted
8518         to host endian here.  Fixes bug 80593.
8519
8520 2007-03-22  Jb Evain  <jbevain@gmail.com>
8521
8522         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
8523         qualified names for pointer types. Fixes #81208.
8524
8525 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
8526
8527         * marshal.c: Add support for PreserveSigAttribute. 
8528         
8529         Code is contributed under MIT/X11 license.
8530
8531 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * process.c: Fix endianness issues. Fixes #81126.
8534
8535         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
8536         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
8537
8538         * image.c (mono_image_lookup_resource): Make this work on big-endian
8539         machines.Change API contract so the caller needs to free the return value.
8540         
8541         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
8542         API change.
8543         
8544 2007-03-14  Martin Baulig  <martin@ximian.com>
8545
8546         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
8547         mono_type_get_desc() as well.
8548
8549 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
8550
8551         * icall.c:  Fix environ access in VS.  
8552         
8553 2007-03-13  Alp Toker  <alp@atoker.com>
8554
8555         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8556         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8557         #63841.
8558
8559 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
8560
8561         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
8562         circular references among dynamic methods. Fixes #81091.
8563
8564         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
8565
8566 2007-03-09  Martin Baulig  <martin@ximian.com>
8567
8568         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
8569
8570 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
8571
8572         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
8573         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
8574         
8575         Code is contributed under MIT/X11 license.
8576         
8577 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
8578
8579         * loader.c: Reapply patch for bug #79424.
8580
8581 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * metadata.c (mono_type_to_unmanaged): Only convert object to
8584         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
8585
8586 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
8587
8588         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
8589         (and incorrectly set) is_reference field from MonoGenericInst.
8590
8591 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
8594         a little earlier.
8595
8596         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
8597
8598         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
8599
8600 2007-03-05  Miguel de Icaza  <miguel@novell.com>
8601
8602         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
8603         FileOptions.1 value to mean "temporary", map that to
8604         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
8605
8606         Fixes 80688
8607
8608 2007-03-03  Marek Habersack  <mhabersack@novell.com>
8609
8610         * appdomain.c: implement MS .Net style shadow copying. Copies of
8611         the assemblies are made in a subdirectory of the dynamic base
8612         directory, the assembly names are preserved.
8613         Copy .mdb and .config files along with the assemblies being shadowed.
8614
8615 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
8616
8617         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
8618         (emit_marshal_handleref): Ditto.
8619
8620         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
8621         on Visual C++. Fixes #80671.
8622
8623 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8624
8625         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
8626         for clone operations.
8627
8628 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
8629
8630         * marshal.c: Fix warnings.
8631
8632 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
8633
8634         * loader.c: allow case-insensitive matching of the dll name
8635         in dllmap handling when prefixed with "i:".
8636
8637 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
8638
8639         * threads.c: Fix #ifdef for dummy_apc function for VS.
8640
8641 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8642
8643         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
8644
8645 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
8646         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
8647         giving precedence to the methods with a fully qualified name
8648         (InterfaceName.MethodName) when building the interface sections
8649         of the vtable.
8650
8651 2007-02-16  Dick Porter  <dick@ximian.com>
8652
8653         * threadpool.c (append_job): Fix fast-path array handling, so it's
8654         less likely the array will grow exponentially when the load is
8655         heavy.
8656
8657 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8658
8659         * metadata-internals.h, loader.c: fix dllmap lookup order
8660         for non-function maps, too, and prepare for fallback code.
8661
8662 2007-02-12  Robert Jordan  <robertj@gmx.net>
8663
8664         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
8665         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
8666         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
8667         GlobalFree. Fixes a part of bug #77075.
8668
8669 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
8670
8671         * loader.c: implemented typedef parent in field memberref.
8672
8673 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
8674
8675         * marshal.c: Fix warnings and remember to call Release on
8676         IUnknown of RCW.
8677         
8678         Code is contributed under MIT/X11 license.
8679
8680 2007-02-10  Miguel de Icaza  <miguel@novell.com>
8681
8682         * class-internals.h: Add MonoHandleRef definition, and
8683         handleref_class to mono_defaults. 
8684
8685         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
8686         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
8687
8688         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
8689         (do nothing on this stage)
8690         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
8691         (emit_marshal_handleref): New method, used for argument handling
8692         of HandleRefs. 
8693
8694 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
8695
8696         * class.c (mono_class_setup_parent): Lazily init com types.
8697         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
8698         init com types.
8699         * object.c (mono_remote_class_vtable): Lazily init com types.
8700         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
8701         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
8702         * domain-internals.h: Expose mono_init_com_types.
8703         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
8704         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
8705         Add support for COM Callable Wrapper marshalling.
8706         * marshal.h: Add icall definitions.
8707         * gc.c: Handle freeing of CCWs in finalizer code.
8708         
8709         Code is contributed under MIT/X11 license.
8710
8711 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
8712
8713         * reflection.c: changed all the signature encoding code to use
8714         a variable-sized buffer.
8715
8716 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8717
8718         * marshal.c: locking fixes: never take the loader lock
8719         or other runtime locks when holding the marshal lock
8720         (fixes bug#80664).
8721
8722 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
8723
8724         * marshal.c: make the delegate function pointer mapping
8725         work for the moving GC.
8726
8727 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
8728
8729         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
8730         for bug #80618.
8731
8732 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8733
8734         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
8735         gmodule.
8736
8737 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8738
8739         * threadpool.c: made the code moving-GC safe.
8740
8741 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8742
8743         * assembly.c, boehm-gc.c, class-internals.h, class.c,
8744         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
8745         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
8746         warning cleanup.
8747         * reflection.c: warning cleanup, some threading and moving GC fixes.
8748
8749 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
8750
8751         * class.c, loader.c: create the needed Set/Get/Address array methods
8752         as well as the .ctors in mono_class_init (), fixes bug #80567.
8753
8754 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
8755
8756         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
8757         we doesn't decrease its alignment. Should fix the sparc build.
8758
8759 2007-01-24  Dick Porter  <dick@ximian.com>
8760
8761         * socket-io.c
8762         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
8763         Create the returned object if we need to ignore an unsupported
8764         socket option.  Fixes a segfault reported by Atsushi.
8765
8766 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8767
8768         * class.c, object.c: restrict GC-tracked fields to
8769         UIntPtr fields used inside corlib, so we provide better
8770         type info to the GC and also allow broken packing as in
8771         bug #80580.
8772
8773 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
8774
8775         * sgen-gc.c: removed duplicated function.
8776
8777 2007-01-19  Miguel de Icaza  <miguel@novell.com>
8778
8779         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
8780         value that means that the value is not supported, but that we
8781         should not return a failure, but instead report this as a
8782         successful operation.
8783
8784 2007-01-19  Raja R Harinath  <rharinath@novell.com>
8785
8786         Fix tests/bug79956.2.il
8787         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
8788         (mono_generic_class_get_class): If the generic definition in an
8789         enum, copy over other fields related to it.
8790
8791 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
8792
8793         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
8794         genericinst enums (bug #79215).
8795
8796 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
8797         * class.c: Fix bug 80307.
8798
8799 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
8800
8801         * image.c: if the file table is not present, try to load
8802         all the modules, since we don't have info about them
8803         having or not metadata (bug #80517).
8804         * assembly.c: allow mono_assembly_load_references () to
8805         work for netmodules.
8806
8807 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8808
8809         * image.c, metadata-internals.h, object.c: execute module
8810         cctors when running on the 2 runtime if present (bug #80487).
8811
8812 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8813
8814         * icall.c: optimized InitializeArray() on bigendian.
8815
8816 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
8817
8818         * icall.c: fix for the broken ARM FPA double format.
8819
8820 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8821
8822         * icall.c: handle endian issues for r4 and r8 types, too, in
8823         the InitializeArray() icall.
8824
8825 2007-01-15  Miguel de Icaza  <miguel@novell.com>
8826
8827         * loader.c (mono_loader_error_prepare_exception): Clear the error
8828         once we have extracted the information from it, do this before we
8829         call into the JIT's class loading mechanisms.
8830
8831         * object.c (mono_class_create_runtime_vtable): Do not clear the
8832         loader error before calling mono_class_get_exception_for_failure
8833         as the loader error is needed inside
8834         mono_class_get_exception_for_failure to throw the error (thinko).
8835
8836         Fixes #80521
8837         
8838 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8839
8840         * reflection.c: align fields rva data so it's faster to load at
8841         runtime.
8842
8843 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8844
8845         Prepare to simplify GenericMethod handling.
8846         * class-internals.h (mono_method_get_context): New accessor function.
8847         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
8848         rather than directly accessing '->context' field.
8849
8850         * class-internals.h (_MonoGenericParam.method): Move ...
8851         (_MonoGenericContainer): ... here.  Add into union with klass field.
8852         * class.c, icall.c, loader.c, metadata.c, reflection.c:
8853         Update to changes.
8854
8855 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
8856
8857         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
8858         the wrapper type enum and reduce relocations.
8859
8860 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8861
8862         * reflection.c (inflate_mono_method): Reuse method instantiation
8863         from the generic method, if available.
8864
8865 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
8866
8867         * marshal.c (emit_marshal_variant): Fix conv_arg
8868         type in last commit, based on whether parameter is byref.
8869         
8870 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
8871
8872         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
8873         marshalling.
8874         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
8875         MONO_TYPE_OBJECT back for VARIANT support.
8876
8877 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
8878
8879         * marshal.c, marshal.h, icall-def.h: Implement 
8880         Marshal.ReAllocCoTaskMem.
8881
8882 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
8883
8884         * marshal.c: memory retention fixes: use the proper
8885         image cache for runtime_invoke method lookups.
8886
8887 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
8888
8889         * mempool.c: added code to help debug mempool allocations.
8890
8891 2007-01-11  Dick Porter  <dick@ximian.com>
8892
8893         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
8894         support (experimenting with faking it with IP_MTU_DISCOVER for
8895         systems that don't have IP_DONTFRAGMENT.)
8896         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
8897         icall.
8898
8899         * icall-def.h: new System.Net.Sockets.Disconnect icall.
8900
8901         * socket-io.h: Add new fields to MonoSocketAsyncResult
8902         corresponding to the new ones in Socket.cs.
8903
8904 2007-01-11  Raja R Harinath  <rharinath@novell.com>
8905
8906         Fix IronPython regression mentioned in #80249
8907         * metadata.c (do_mono_metadata_parse_generic_class): Clear
8908         'cached_context' field, since it may have been initialized as a
8909         side-effect of metadata parsing.
8910
8911         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
8912         (_MonoGenericClass.cached_class): Move here and rename from lone
8913         remaining field of ...
8914         (_MonoInflatedGenericClass): ... this.  Remove.
8915         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
8916         to changes.
8917
8918         Fix mcs/tests/test-128.cs regression.
8919         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
8920         2007-01-10 change below.
8921         [MONO_TYPE_OBJECT]: Recurse into array case.
8922
8923 2007-01-11  Raja R Harinath  <harinath@gmail.com>
8924
8925         * class-internals.h (mono_get_inflated_generic_class): Remove.
8926         * class.c (mono_get_inflated_generic_class): Remove.
8927         (mono_generic_class_get_class): Rename from
8928         mono_class_create_generic.
8929         (mono_class_from_mono_type) [GENERICINST]: Use it.
8930         * reflection.c, metadata.c: Update to changes.  Use
8931         'mono_class_from_mono_type'.
8932
8933 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
8934
8935         * reflection.c: use passed type when encoding an array element
8936         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
8937
8938 2007-01-09  Robert Jordan  <robertj@gmx.net>
8939
8940         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
8941         result arguments (someDelegate.EndInvoke (unrelatedAres)).
8942         Fixes bug #80392.
8943
8944 2007-01-09  Raja R Harinath  <rharinath@novell.com>
8945
8946         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
8947
8948         * object.c (set_value): Avoid aliasing between type->data.klass
8949         and type->data.generic_class.
8950
8951         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
8952
8953 2007-01-08  Raja R Harinath  <rharinath@novell.com>
8954
8955         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
8956         between type->data.klass and type->data.generic_class.
8957
8958 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
8959
8960         * marshal.c: In MS.NET, StringBuilder objects are not copied by
8961         value in out parameters.
8962
8963 2007-01-08  Raja R Harinath  <rharinath@novell.com>
8964
8965         Simplify invariant for MonoGenericClass::klass field.
8966         * class.c (mono_class_create_generic): Verify 'klass' is null.
8967         * metadata.c (do_mono_metadata_parse_generic_class): Don't
8968         initialize 'klass' field.
8969
8970 2007-01-05  Raja R Harinath  <rharinath@novell.com>
8971
8972         Ongoing work to avoid redundant data and simplify invariants.
8973         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
8974         'generic_class', and change type to a GenericInst.
8975         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
8976         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
8977
8978 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
8979
8980         * class.c : skip io-layer under PLATFORM_WIN32.
8981
8982 2007-01-03  Tor Lillqvist  <tml@novell.com>
8983
8984         Fix #80305: In a bundled executable, look in the bundled exe
8985         assembly to determine the runtime version. Add the possibility to
8986         bundle also the machine.config file.
8987         
8988         * assembly.c (mono_assembly_open_from_bundle): Make
8989         non-static. Allow being called even if we have no bundled
8990         assemblies, and return NULL right away in that case.
8991
8992         * domain-internals.h: Declare mono_assembly_open_from_bundle()
8993         here.
8994
8995         * domain.c (app_config_parse): Take an assembly exe file name as
8996         parameter instead of a config file name. Check for a bundled
8997         config file for that assembly by calling
8998         mono_config_string_for_assembly_file() (see below) before looking
8999         for one in the file system.
9000         (get_runtimes_from_exe): Corrsponding change to call of
9001         app_config_parse().
9002         (get_runtimes_from_exe): Check for bundled assembly exe file first
9003         by calling mono_assembly_open_from_bundle(). If no bundled
9004         assembly exe file is found, call mono_image_open() as before to
9005         look it up in the file system.
9006
9007         * mono-config.c: Add variable bundled_machinec_onfig.
9008         (mono_config_string_for_assembly_file): New function.
9009         (mono_config_for_assembly): Move code snippet that looks for a
9010         bundled assembly .config file into the above new function. Call
9011         it.
9012         (mono_register_machine_config, mono_get_machine_config): New
9013         functions to set and retrieve
9014
9015         * assembly.h: Declare mono_register_machine_config().
9016
9017         * mono-config.h: Declare mono_get_machine_config() and
9018         mono_config_string_for_assembly_file().
9019
9020         * icall.c: No declaration of environ necessary on Win32. It is
9021         declared (as a macro expanding to a function call) in stdlib.h.
9022         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
9023         New internal mono function. Returns the value of
9024         mono_get_machine_config() as a Mono string.
9025
9026         * icall-def.h: Add get_bundled_machine_config().
9027
9028 2007-01-04  Raja R Harinath  <rharinath@novell.com>
9029
9030         Remove redundant field
9031         * class-internals.h (_MonoGenericContext.container): Remove field.
9032         * loader.c (mono_method_get_signature_full): Don't parse a
9033         "container" for a signature parse when the signature is inflated
9034         immediately.
9035         (method_from_methodspec): Likewise, for a generic_inst.
9036         * class.c, metadata.c, reflection.c: Update to changes.
9037
9038 2006-01-04  Raja R Harinath  <rharinath@novell.com>
9039
9040         * class-internals.h (_MonoGenericClass): Rename 'context' field to
9041         'cached_context', and change semantics -- it starts off NULL, and
9042         is initialized on demand.
9043         * class.c (mono_generic_class_get_context): New accessor to
9044         replace 'context' field accesses.
9045         (mono_class_get_context): New helper.
9046         (*): Update to changes.
9047         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
9048
9049 2007-01-03  Miguel de Icaza  <miguel@novell.com>
9050
9051         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
9052         before the memcpy.   Fixes Marshal2 regression.
9053
9054 2007-01-02  Jb Evain  <jbevain@gmail.com>
9055
9056         * blob.h: add a MONO_TYPE_ENUM definition
9057         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
9058         fix the encoding of arrays of enums in custom attributes.
9059
9060         Fixes #79666.
9061
9062 2007-01-01  Miguel de Icaza  <miguel@novell.com>
9063
9064         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
9065         string is null terminated, but only cut the string short if it
9066         overflows the buffer.   
9067         
9068         (mono_string_to_byvalstr): Also fix this routine.   The code here
9069         was not properly terminating a string (it was only terminated
9070         because of the previous catch-all memset). 
9071
9072         I left the memset, because I do not know if applications expect
9073         the runtime to clear this region. 
9074
9075         Fixes #79944.
9076
9077         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
9078         Clear the error before returning to unmanaged code to prevent the
9079         runtime from being confused later on (fixes  80420).
9080         (ves_icall_type_from_name): Always call mono_loader_clear_error
9081         after parsing a type that could have failed.
9082         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
9083
9084         * loader.c (mono_loader_clear_error): Fix indentation.
9085
9086 2006-12-28  Martin Baulig  <martin@ximian.com>
9087
9088         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
9089
9090 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9091
9092         * reflection.c: patch from Rolf Bjarne Kvinge to fix
9093         getting a token for an EnumBuilder.
9094
9095 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
9096
9097         * reflection.c: be more careful in case resource generation
9098         fails to create the data array.
9099
9100 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
9101
9102         * sgen-gc.c: write barrier for clone and fix unregister handles.
9103
9104 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
9105
9106         * reflection.c: some fixes needed in the generics code for the moving GC.
9107
9108 2006-12-22  Robert Jordan  <robertj@gmx.net>
9109
9110         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
9111         account. Fixes bug #80299.
9112
9113 2006-12-21  Raja R Harinath  <rharinath@novell.com>
9114
9115         Fix WaitHandle usage in delegates.
9116         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
9117         * object.c (mono_wait_handle_new): Use the property set method to
9118         initialize the handle.
9119         (mono_wait_handle_get_handle): New.
9120         * threadpool.c (mono_async_invoke): Use it.
9121         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
9122         Likewise.
9123         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
9124
9125 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
9126
9127         * marshal.c (emit_marshal): Call emit_marshal_variant and
9128         emit_marshal_com_interface when applicable.
9129         (emit_marshal_variant, emit_marshal_com_interface): Add
9130         methods for this case and remove if's from emit_marshal_object.
9131         
9132 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
9133
9134         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
9135
9136 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
9137
9138         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
9139         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
9140         and GlobalFree on Windows. Remove FIXME.
9141
9142 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9143
9144         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
9145         implementation for managed objects.
9146
9147 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
9148
9149         * object.c: implemented code to be used for checking
9150         that no reference field overlaps with non-references.
9151
9152 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9153
9154         * threadpool.c: fix queue code to be compatible with the
9155         moving GC.
9156
9157 2006-12-18  Miguel de Icaza  <miguel@novell.com>
9158
9159         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
9160         in structures by throwing ArgumentNullException.
9161
9162         (emit_marshal_safehandle): Also when they are null parameters.
9163
9164         (emit_marshal_safehandle): Add support for ref
9165         SafeHandles parameters
9166
9167 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9168
9169         * profiler.c: updated to use the mono-dl API instead of
9170         gmodule.
9171
9172 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9173
9174         * profiler.c: updated to use the mono-dl dynamic loading
9175         API instead of gmodule.
9176
9177 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9178
9179         * profiler.c: use readlink, older versions of glib don't have
9180         g_file_read_link ().
9181
9182 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9183
9184         * profiler.c: try to detect the path to mono if libc fails to provide
9185         a useful name (bug #80286).
9186
9187 2006-12-16  Raja R Harinath  <rharinath@novell.com>
9188
9189         Fix #80242
9190         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
9191         instance, use the generic type definition instead.
9192         (ves_icall_Type_GetNestedTypes): Likewise.
9193         * class.c (mono_class_create_generic): Always set the
9194         nested_classes of a generic instance to NULL, even if the generic
9195         type definition has nested types.
9196
9197 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
9198
9199         * marshal.c (mono_string_from_bstr): Revert previous Windows change
9200         and fix on Linux.
9201         
9202 2006-12-15  Miguel de Icaza  <miguel@novell.com>
9203
9204         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
9205         my arguments were in the wrong order.   I also fixed the Windows
9206         version which seems to have had the same issue.
9207
9208         (mono_free_bstr): On Unix, this is g_free.
9209         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
9210         conversions (for the tests in corlib to pass).
9211
9212 2006-12-14  Miguel de Icaza  <miguel@novell.com>
9213
9214         * marshal.c (emit_ptr_to_object_conv): For now, ignore
9215         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
9216         exception if a ref SafeHandle in a struct has changed).
9217         
9218         (emit_struct_conv): Do not perform layout checks for classes
9219         derived from SafeHandle, as those are specially handled. 
9220
9221         (emit_object_to_ptr_conv): Add support for
9222         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
9223
9224         (emit_marshal_safehandle): Implement conversion of return values
9225         of safehandles (MARSHAL_ACTION_CONV_RESULT).
9226         
9227         * threads.c: WaitHandle now is compiled with two different handles
9228         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
9229         for 2.0.
9230         
9231         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
9232         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
9233         these routines to cope with both kinds of fields.
9234
9235 2006-12-12  Miguel de Icaza  <miguel@novell.com>
9236
9237         * metadata.c (mono_type_to_unmanaged): Handle the case where
9238         type->data.klass is a SafeHandle, and in that case, return the
9239         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
9240         MONO_MARSHAL_CONV_SAFEHANDLE. 
9241
9242 2006-12-11  Miguel de Icaza  <miguel@novell.com>
9243
9244         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
9245         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
9246         calling emit_marshal_object.
9247
9248         (emit_marshal_safehandle): Implement marshalling of
9249         SafeHandle parameters (no ref support yet).
9250
9251         (MarshalAction): Document the defines as I implement
9252         them for SafeHandle.
9253
9254         (emit_marshal_object): indentation police.
9255
9256         * class-internals.h: Define MonoSafeHandle.
9257         Add safehandle_class to MonoDefaults type.
9258
9259         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
9260         list of classes to check for fields. 
9261
9262         * domain.c (mono_init_internal): Add SafeHandle to the list of
9263         mono_defaults loaded.
9264
9265 2006-12-15  Raja R Harinath  <rharinath@novell.com>
9266
9267         Fix #80253
9268         * reflection.c (mono_reflection_bind_generic_parameters): If the
9269         generic type definition is a type builder, ensure that it is fully
9270         initialized before instantiating it.  Kill some dead code.
9271
9272 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
9273
9274         * object.c: clear the loader_error () before loading
9275         more metadata stuff (bug #80258).
9276
9277 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
9278
9279         * icall.c, icall-defs.h: type modifiers icalls for
9280         parameters and properties.
9281
9282 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
9283
9284         * object.c, icall.c: fixed warnings.
9285
9286 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
9287
9288         * marshal.c: fixed a couple of leaks and coding style in a few places.
9289
9290 2006-12-08  Dick Porter  <dick@ximian.com>
9291
9292         * process.c: Cope with NULL ProcessStartInfo arguments on windows
9293         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
9294         80173.
9295
9296 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
9297
9298         * process.c: ProcessStartInfo may have only filename set and
9299         arguments can be NULL.
9300
9301 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9302
9303         * icall.c: fix leak found by Robert Jordan.
9304
9305 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
9306
9307         * marshal.c, marshal.h: generate managed method to access an element
9308         of a multi-dimensional array.
9309
9310 2006-11-30  Paolo Molaro (lupus@ximian.com)
9311
9312         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
9313
9314 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9315
9316         * icall.c: back out GetFields () fix until the serialization code is
9317         fixed to not depend on the incorrect behaviour.
9318
9319 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
9320
9321         * profiler.c: provide defaults if none are set.
9322
9323 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
9324
9325         * Makefile.am, attrdefs.h: new public header file with
9326         constants for attributes for use by embedders.
9327
9328 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
9329
9330         * icall.c: GetFields () fix for bug #80064.
9331
9332 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
9333
9334         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
9335         removed long unused icalls.
9336
9337 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
9338   
9339         * marshal.c: 
9340                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
9341                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
9342                 can be generated without a delegate class.
9343                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
9344         
9345         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
9346
9347 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9348
9349         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
9350         #80069.
9351
9352 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
9353
9354         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
9355         icall-def.h: added icalls needed by System.GC.
9356
9357 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
9358
9359         * loader.c: ensure the class in catch clauses is handled
9360         correctly for generics methods (fixes bug#79980).
9361
9362 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
9363
9364         * monitor.h, monitor.c: added mono_locks_dump () function
9365         to help debug deadlocks involving managed locks.
9366
9367 2006-11-13  Dick Porter  <dick@ximian.com>
9368
9369         * file-io.c (get_file_attributes): If the file is a symlink try
9370         and get the stat data for the target, but also add the
9371         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
9372         the specs for the windows symlink support, but will probably have
9373         to be reworked when I have test data from a vista machine.  Fixes
9374         bug 79887.
9375
9376 2006-11-13  Dick Porter  <dick@ximian.com>
9377
9378         * gc.c (mono_domain_finalize): 
9379         * marshal.c (mono_delegate_begin_invoke): 
9380         * threadpool.c (socket_io_init, mono_thread_pool_init)
9381         (mono_thread_pool_finish): 
9382         * monitor.c (mono_monitor_try_enter_internal): 
9383         * threads.c (mono_thread_resume, mono_thread_init)
9384         (mono_thread_suspend_all_other_threads)
9385         (mono_thread_execute_interruption): 
9386         * appdomain.c (mono_domain_unload): Check for NULL error returns
9387         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
9388         75733.
9389
9390 2006-11-11  Miguel de Icaza  <miguel@novell.com>
9391
9392         * process.c
9393         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
9394         Only close the handle if the value of the handle is not
9395         INVALID_HANDLE_VALUE.  This just makes the process a bit more
9396         robust.
9397
9398         Improvement for #75733, so that we do not run into this problem. 
9399
9400         
9401         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
9402         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
9403         internal variables.  Fixes #79462 
9404         
9405
9406 2006-11-09  Dick Porter  <dick@ximian.com>
9407
9408         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
9409         Use poll() not select().  Fixes bug 79397.
9410
9411 2006-11-09  Raja R Harinath  <rharinath@novell.com>
9412
9413         Fix #79872
9414         * assembly.c (mono_assembly_load_from_full): Check that the given
9415         image has an assembly manifest.
9416
9417 2006-11-09  Ankit Jain  <jankit@novell.com>
9418
9419         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
9420         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
9421         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
9422
9423 2006-11-07  Dick Porter  <dick@ximian.com>
9424
9425         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
9426         Put the old resolver behaviour back for pre-2.0 profiles.
9427
9428 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
9429
9430         * threadpool.c: precise GC and locking fixes.
9431
9432 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
9433
9434         * class.c: don't load types that have an explicit unaligned
9435         managed reference. Provide better info in the TypeLoad exception.
9436         Part of the fix for bug #79744.
9437         * object.c: use the correct check for class type load issues.
9438
9439 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
9440
9441         * class.c: enforce alignment of fields with managed references
9442         even when Pack=1 is forced by the user (bug #77788).
9443
9444 2006-11-03  Dick Porter  <dick@ximian.com>
9445
9446         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
9447         If the address reverse lookup fails, return it as the hostname
9448         anyway.  Fixes bug 79721.
9449
9450 2006-11-03  Dick Porter  <dick@ximian.com>
9451
9452         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
9453         Fix build on Windows.
9454
9455 2006-11-02  Dick Porter  <dick@ximian.com>
9456
9457         * icall-def.h: 
9458         * object-internals.h: 
9459         * exception.c (mono_get_exception_thread_interrupted): 
9460         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
9461         Fixes bug 74525.
9462
9463         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
9464         Check for pending Thread.Interrupt.
9465
9466 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
9467         * loader.c: Fixed bug 79684.
9468
9469 2006-10-27  Dick Porter  <dick@ximian.com>
9470
9471         * file-io.c (get_file_attributes): Force symlinks to directories
9472         to be returned as a regular file.  Fixes bug 79733.
9473 2006-10-26  Dick Porter  <dick@ximian.com>
9474
9475         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
9476         CreateFile to open a directory then we need to set the
9477         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
9478
9479 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
9480
9481         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
9482         friends.
9483
9484 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
9485
9486         * sgengc.c: small cleanup of timer code.
9487
9488 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
9489
9490         * sgen-gc.c: fix some warnings and start adding support for
9491         complete object removal on domain unload.
9492
9493 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
9494
9495         * assembly.c: build_assembly_name should not consider a version
9496         number without build or revision number invalid. Fixes bug #79715.
9497
9498 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
9499
9500         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
9501         call kernel32 function OutputDebugString directly.
9502         
9503         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
9504         
9505 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
9506
9507         * reflection.c: small cleanup, using a function to insert a MonoString
9508         in the string heap.
9509
9510 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
9511
9512         * reflection.c: moving GC fixes.
9513
9514 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
9515
9516         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
9517         all the objects with finalizers belonging to an unloading appdomain.
9518
9519 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
9520
9521         * sgen-gc.c: added ability to allocate even when the nursery is fully
9522         pinned and fixed a couple of bugs.
9523
9524 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
9525
9526         * threads.h: Revert the last change for now.
9527
9528         * threads.h (mono_thread_get_pending_exception): Rename this to
9529         mono_thread_get_undeniable_exception ().
9530
9531 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
9532
9533         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
9534         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
9535         when fname does not refer to valid assembly. This result in a more
9536         meaningful error message.
9537         * exception.c: added mono_get_exception_bad_image_format2 which 
9538         constructs a BadImageFormatException using the ctor taking a custom
9539         message and the file name. Passing in a NULL msg results in a default
9540         message.
9541         * exception.h: define mono_get_exception_bad_image_format2 function.
9542         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
9543         when file name pointed to an invalid IL image. Use 
9544         mono_get_exception_file_not_found2 to construct FileNotFoundException,
9545         as this results in a more meaningful error message.
9546
9547 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
9550         #79465.
9551
9552 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
9553
9554         * metadata.c (mono_type_size): Change the align parameter to guint32 for
9555         consistency with the other _size functions.
9556         (mono_type_stack_size): Ditto.
9557
9558         * class.c object.c icall.c: Fix warnings caused by the above change.
9559
9560         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
9561
9562         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
9563
9564         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
9565
9566 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
9567
9568         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
9569         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
9570         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
9571         threadpool.h, threads-types.h: mark more internal functions.
9572
9573 2006-10-11  Dick Porter  <dick@ximian.com>
9574
9575         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
9576         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
9577         reproduce the bug even before applying the fix.)
9578
9579 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
9580
9581         * reflection.c: allow retrieving attributes for arguments in generic
9582         methods (bug #79241).
9583
9584 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
9585
9586         * debug-mono-symfile.c: properly check fopen () result (found by
9587         coverity).
9588
9589 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
9590
9591         * reflection.c: make error message clearer and fixed two
9592         issuelets found by Coverity.
9593
9594 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
9597
9598 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
9599
9600         * object-internals.h, gc-internal.h, profiler-private.h:
9601         mark internal functions.
9602
9603 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
9604
9605         * reflection.c: put data in the text section.
9606         * icall.c: recognize more types in type_from_typename ().
9607         * process.c, marshal.c: added some GC FIXMEs.
9608
9609 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
9610
9611         * loader.c: check for NULL before initializing.
9612
9613 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
9614
9615         * gc.c (finalizer_thread): Use a non-alertable wait here.
9616
9617         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
9618         until the correct solution is found.
9619
9620 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * reflection.c (mono_module_get_object): Avoid an assert when operating on
9623         modules with no metadata. Fixes #79596.
9624
9625         * image.c (load_metadata_ptrs): Put back the error message when
9626         the #- heap is encountered since the support is not complete yet.
9627
9628 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
9629
9630         * gc.c: do not allow the user to SuppressFinalize () a
9631         delegate because it would leak the trampoline if present.
9632
9633 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
9634
9635         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
9636         PropertyPtr table.
9637
9638 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
9641
9642         * metadata.c (mono_metadata_get_param_attrs): Ditto.
9643
9644         * row-indexes.h: Add definitions for *Ptr tables.
9645
9646         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
9647
9648         * metadata.c (mono_metadata_translate_token_index): New helper function to
9649         translate table indexes used in uncompressed metadata.
9650         (mono_metadata_decode_table_row): Ditto.
9651         (mono_metadata_decode_table_row_col): Ditto.
9652
9653         * metadata.c: Add table schema for *Ptr tables.
9654
9655         * class.c loader.c: Use the new helper function to access the affected metadata
9656         tables.
9657         
9658         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
9659         #38532.
9660         
9661 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
9662
9663         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
9664         sequences which can be unbounded in size. Fixes #79583.
9665
9666 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
9669         static initialization.
9670
9671         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
9672
9673         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
9674
9675         * domain.c (mono_domain_free): Free up type_init_exception_hash.
9676
9677         * object.c (mono_runtime_class_init): Implement correct semantics when a static
9678         ctor fails, i.e. throw the same exception on subsequent accesses.
9679         
9680 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
9681
9682         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
9683         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
9684         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
9685         Handle marshalling of interfaces and VARIANTs contained in structs.
9686         
9687         Code is contributed under MIT/X11 license.
9688         
9689 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
9690
9691         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
9692         
9693         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
9694         mempool.
9695
9696 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9697
9698         * console-io.c: ignore previous SIGINT handler.
9699
9700 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
9701
9702         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
9703         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
9704         #79460, #79461, #79485.
9705
9706         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
9707
9708         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
9709         #79217.
9710
9711 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
9714         could be generated from it.
9715
9716 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
9717
9718         * rand.c: fix read loop to correctly handle EINTR.
9719
9720 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
9721
9722         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
9723         internal calls are defined to keep methods closer to the declaring
9724         type and allow a significant reduction in runtime relocations and
9725         memory usage.
9726
9727 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
9728
9729         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
9730         exception message to have FileNotFoundException use the default
9731         assembly load error message. Fixes bug #79426.
9732         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
9733
9734 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9735
9736         * threadpool.c: (start_thread_or_queue) use the root domain when
9737         creating the thread instead of the async object one.
9738
9739 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
9740
9741         * class.c, object.c, class-internals.h, reflection.c:
9742         for arrays, store element_size inside MonoClass (speedup
9743         for array object creation).
9744
9745 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
9746
9747         * icall.c: fixed CodeBase to use the file name and not the module
9748         name (bug #79365).
9749
9750 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
9751
9752         * mono-debug.c, mono-debug.h: export find_method as
9753         mono_debug_find_method ().
9754
9755 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
9756
9757         * debug-helpers.c, class-internals.h: added a few functions useful
9758         when debugging under gdb.
9759
9760 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9761
9762         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
9763         characters that need special handling.
9764
9765 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
9766
9767         * mono-config.c: make the os/cpu specification more flexible,
9768         allowing lists and negation.
9769
9770 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
9771
9772         * marshal.c: COM Interop fixes. Handle case where method->klass.
9773         is interface. Handle BSTR/MonoString when null. Use CDECL as 
9774         calling convention on non-windows platforms. This is for
9775         compatibility with XPCOM and MainWin COM.
9776         
9777         Code is contributed under MIT/X11 license.
9778         
9779
9780 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
9781
9782         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
9783         correctly. Fixes #79217.
9784
9785         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
9786
9787 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
9788
9789         * mono-config.c: allow both an os and cpu attribute for dllmap
9790         and dllentry elemnets to enable a single config file to be used
9791         for multiple architectures.
9792
9793 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
9794
9795         * loader.c: MonoLoaderError was cleared too soon on load failure.
9796         Fixes bug #79424.
9797
9798 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
9799
9800         * icall.c: use the defining class vtable when accessing a
9801         static field, not a pobblibly derived class.
9802
9803 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * icall.c string-icalls.c: Remove references to unicode.h.
9806
9807         * unicode.h unicode.c Makefile.am: Remove these unused source files.
9808
9809         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
9810
9811         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
9812         indicating the image where custom marshaller types should be looked up.
9813         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
9814         custom marshallers, instead of corlib. Fixes #79425.
9815
9816 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
9817
9818         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
9819
9820 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
9821
9822         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
9823         Implement Environment.ProcessorCount.
9824         
9825         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
9826         Implement Environment.ProcessorCount.
9827         
9828         * icall.c: 
9829         Add Environment.ProcessorCount icall.
9830         
9831         Patch by Jason McFall.
9832
9833 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9834
9835         * assembly.c: don't append .exe/.dll when the filename already contains
9836         one of those extensions.
9837
9838 2006-09-12  Martin Baulig  <martin@ximian.com>
9839
9840         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
9841         to array interfaces.
9842
9843 2006-09-11  Martin Baulig  <martin@ximian.com>
9844
9845         * reflection.c (mono_image_build_metadata): Create the
9846         MethodImpl's after emitting all types and methods, so we don't
9847         need another fixup pass for them.
9848
9849 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * class.c (mono_class_from_name_case): Fix regression introduced by the last
9852         change.
9853
9854 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
9855
9856         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
9857         unload.
9858
9859 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
9860
9861         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
9862         args is not set. Fixes #78926.
9863
9864 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
9867
9868         * image.c (load_class_names): Move this to class.c, and rename it to 
9869         'mono_image_init_name_cache'.
9870         (load_modules): Fix a warning.
9871
9872         * class.c icall.c image.c: Initialize image->name_cache lazily.
9873
9874         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
9875         on its name using information in the AOT file.
9876
9877         * class.c (mono_class_from_name): Use the new hook function.
9878
9879 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
9880
9881         * reflection.c (mono_param_get_objects): Handle enum default parameter values
9882         correctly.
9883
9884         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
9885         Fixes #79289.
9886         
9887 2006-09-06  Martin Baulig  <martin@ximian.com>
9888
9889         * icall.c (mono_lookup_internal_call): Small fix.
9890
9891 2006-09-05  Raja R Harinath  <rharinath@novell.com>
9892
9893         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
9894         double g_free.
9895
9896 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
9897
9898         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
9899         when --debug is specified.
9900
9901 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
9902
9903         * class.c (setup_generic_array_ifaces): Fix a warning.
9904
9905 2006-09-04  Miguel de Icaza  <miguel@novell.com>
9906
9907         * Temporarily remove the patch to assemly.c that checks the
9908         assembly versions as it breaks our gacutil.
9909
9910 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
9911
9912         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
9913
9914         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
9915         a net 1.0 runtime.
9916
9917         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
9918         created using the default ctor. Fixes #79152.
9919         (mono_string_builder_to_utf16): Ditto.
9920
9921 2006-09-01  Martin Baulig  <martin@ximian.com>
9922
9923         Fix handling of the generic array interfaces.
9924
9925         * class-internals.h
9926         (MonoDefaults): Removed `generic_array_class' and added
9927         `generic_ilist' class.
9928
9929         * class.c
9930         (mono_bounded_array_class_get): Add the new generic array interfaces.
9931         (setup_generic_array_ifaces): New static method; create vtable
9932         entries for each method in the generic array interfaces.
9933
9934         * metadata.c
9935         (select_container): Allow "parent-less" generic methods.
9936
9937         * marshal.c
9938         (mono_marshal_get_generic_array_helper): New public method.
9939
9940         * icall.c
9941         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
9942         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
9943         moved the interncall into System.Array.
9944
9945 2006-09-01  Raja R Harinath  <rharinath@novell.com>
9946
9947         A few more cases of avoiding work on types with ->byref set.
9948         Has the real fix for #79238
9949         * icall.c (is_generic_parameter): New helper.
9950         (ves_icall_Type_GetGenericParameterPosition): Use it.
9951         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
9952         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
9953         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
9954         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
9955         reference types.
9956         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
9957         reference types.
9958         (ves_icall_Type_get_IsGenericInstance): Likewise.
9959         (ves_icall_Type_get_IsGenericType): Likewise.
9960
9961 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
9964         class if possible.
9965
9966         * mempool.h (mono_mempool_get_allocated): New helper function.
9967
9968         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
9969         change.
9970
9971         * mempool.c: Fix warnings and the calculation of stats.
9972
9973         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
9974
9975         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
9976
9977         * loader.c (mono_get_method_from_token): Update method_count stat.
9978
9979         * class-internals.h (MonoStats): Add some stats.
9980
9981 2006-08-31 Robert Jordan  <robertj@gmx.net>
9982
9983         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
9984         with managed variants.
9985         All code is contributed under the MIT/X11 license.
9986         
9987 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
9990         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
9991
9992         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
9993
9994         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
9995         with cycles in classes.
9996
9997         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
9998
9999         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
10000         missing a [MarshalAs] directive. Fixes #79203.
10001
10002         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
10003         klass->marshal_info. Fixes #79217.
10004
10005 2006-08-30  Martin Baulig  <martin@ximian.com>
10006
10007         Committing a patch from Joachim Ante <joe@otee.dk>:
10008         Add support for binary data symbol stores.
10009
10010         * debug-mono-symfile.c
10011         (mono_debug_open_mono_symbol_file): Renamed into
10012         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
10013         arguments.
10014
10015         * mono-debug.c
10016         (mono_debug_open_image): Added `raw_contents' and `size' args.
10017         (mono_debug_init_2_memory): New public function.
10018
10019 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
10020
10021         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
10022
10023 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10024
10025         * appdomain.c: implement support for ShadowCopyFiles.
10026
10027 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
10028
10029         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
10030         when value is NULL (and should remove CID #51).
10031
10032 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10033
10034         * image.c: moved 2 functions to ../utils.
10035
10036 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
10037
10038         * gc.c: cope with the target object of a GC handle being NULL
10039         (bug #78877).
10040
10041 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
10042
10043         * class.c: recursively check parent's explicit implementations
10044         of interface methods (fixes bug #79125).
10045
10046 2006-08-19  Miguel de Icaza  <miguel@novell.com>
10047
10048         * filewatcher.c: Avoid warnings when building, do not redefine
10049         constants that are defined.
10050
10051         Remove warnings.
10052
10053 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10054
10055         * image.c: don't fail when the link points to an absolute path.
10056
10057 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
10058
10059         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
10060         Fix CID #3.
10061
10062 2006-08-17  Miguel de Icaza  <miguel@novell.com>
10063
10064         * image.c (full_path): A new method used to obtain the actual path
10065         of an assembly even in the presence of symbolic links.  
10066
10067         This is necessary for the case where we are running a binary that
10068         has been GACed, but we are using the "published" path name
10069         ($prefix/mono/1.0/blah.exe) which happens to point to the real
10070         file in the GAC.
10071
10072         This was the source of the failure for the `xsp' command with the
10073         recent AppDomain changes, as far as the runtime was concerned,
10074         there were two different assemblies: $prefix/mono/1.0/blah.exe and
10075         $prefix/mono/gac/blah/version/blah.exe.
10076
10077         (do_mono_image_open): use full path
10078
10079 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10080
10081         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
10082
10083 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
10084
10085         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
10086         domain_id is supplied. Fix CID #241 and corlib's unit tests.
10087
10088 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10089
10090         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
10091         small structures. Fixes #78990.
10092
10093 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10094
10095         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
10096
10097         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
10098
10099 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10100
10101         * appdomain.c:
10102         * marshal.c: don't load all the assemblies from a domain into newly
10103         created ones. The new domains might have different rules and load
10104         assemblies from different locations. Fixes bug #76757.
10105
10106         Patch by Lluis. Conflicts resolved by Brian Crowell.
10107
10108 2006-08-16  Alp Toker  <alp@atoker.com>
10109
10110         * socket-io.c: First half of the fix for #79084.
10111         Set sa_size to the length of the content, not that of the struct.
10112         Don't add NULL suffix to the content, this should be done in
10113         managed code if needed.
10114
10115 2006-08-14  Raja R Harinath  <rharinath@novell.com>
10116
10117         Fix part of #79012
10118         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
10119         mono_metadata_parse_type returns NULL.
10120
10121 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
10122
10123         * normalization-tables.h : new file for string normalization data.
10124         * locales.c, locales.h, icall.c :
10125           added load_normalization_resource() for string normalization,
10126           and icall as well.
10127         * Makefile.am : added normalization-tables.h to the sources.
10128
10129 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * marshal.c: Add more helper functions to reduce code duplication and use them
10132         everywhere.
10133
10134 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * marshal.c: Fix non-x86 stdcall warnings.
10137         
10138         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
10139         them everywhere.
10140
10141 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
10142
10143         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
10144         type check on multi-dimensional arrays. Fixes #79000.
10145
10146 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
10147
10148         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
10149         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
10150         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
10151         * class-internals.h: add is_com_object to class structure.
10152         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
10153         null checks to COM object marshalling. Fix .ctor call on RCW.
10154         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
10155         
10156         All code is contributed under the MIT/X11 license.
10157
10158 2006-08-09  Dick Porter  <dick@ximian.com>
10159
10160         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
10161         racing mono_monitor_allocator_lock() somewhere, so don't delete
10162         the critical section for now.  Found by running and exiting
10163         monodevelop.
10164
10165 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
10166
10167         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
10168         (ves_icall_System_ComObject_FindInterface): Ditto.
10169         (ves_icall_System_ComObject_CacheInterface): Ditto.
10170
10171         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
10172         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
10173
10174 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10175
10176         * threadpool.c: treat pipes from process asynchronous reads as sockets
10177         when reading from them, so we get select/poll or epoll to wait for
10178         data.
10179
10180 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
10181
10182         * loader.c: Fix a typo (CID #233) in the null check.
10183
10184 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
10185
10186         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
10187         Hopefully fixes #78949.
10188         
10189         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
10190         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
10191         bytes. Fixes #78972.
10192
10193 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10194
10195         * filewatcher.c: we need to set errno here.
10196
10197 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10198
10199         * filewatcher.c: let Win32Exception get the error value.
10200
10201 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10202
10203         * filewatcher.c: translate errno into win32 errors for Win32Exception
10204         to know what happened.
10205
10206 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
10207
10208         * threadpool.c: Fix more warnings.
10209
10210         * assembly.c (search_loaded): Fix warnings.
10211
10212         * threadpool.c (mono_thread_pool_finish): Fix warnings.
10213         (mono_async_invoke): Ditto.
10214
10215 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
10216
10217         * object.c (mono_remote_class_vtable): Need to create proxy vtable
10218         entries for __ComObject type in addition to ComImport types.
10219         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
10220         about hash table.
10221         
10222         All code is contributed under the MIT/X11 license.
10223
10224 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
10225
10226         * image.c: avoid tentative loading of modulerefs that contain
10227         no metadata (P/Invoke library names).
10228
10229 2006-07-28  Dick Porter  <dick@ximian.com>
10230
10231         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
10232         mono_loader_lock() somewhere, so don't delete the critical section
10233         for now.  Found by running and exiting monodevelop.
10234
10235 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10236
10237         * filewatcher.c: define the inotify syscalls when we're building on
10238         linux and have sys/syscall.h. The build system might not have support
10239         for inotify but the target system might have it.
10240
10241 2006-07-26  Miguel de Icaza  <miguel@novell.com>
10242
10243         * domain.c: Documentation updates.
10244
10245         * loader.c (mono_free_method): Do not release the method
10246         information if we are being profiled, as profilers will use this
10247         information at shut down to present some data to the user.
10248
10249         This is needed so that the profiler does not crash, as the
10250         profiler tends to keep MonoMethods around, and they might become
10251         invalid if we free these.
10252
10253         (mono_get_method_constrained): Return the original CIL stream
10254         method as well, so verification can be performed against it.
10255
10256 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10257
10258         * filewatcher.[ch]: support for inotify file system watcher.
10259         * icall.c: add new internal calls for the inotify file system watcher.
10260
10261 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10262
10263         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
10264         #78888.
10265
10266 2006-07-20  Dick Porter  <dick@ximian.com>
10267
10268         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
10269         warning.
10270
10271 2006-07-20  Dick Porter  <dick@ximian.com>
10272
10273         * threads.c (start_wrapper): Do the thread cleanup while we still
10274         hold a reference to its object.  Fixes bug 78123.
10275
10276 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
10277
10278         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
10279         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
10280           "managed-to-managed".
10281         * icall.c: Redirect string constructors that take sbyte* to
10282           ves_icall_System_String_ctor_RedirectToCreateString.
10283         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
10284           to CreateString () methods with matching signature.
10285         * reflection.c: Use original security informations for
10286           MONO_WRAPPER_MANAGED_TO_MANAGED.
10287         * security-manager.c: Use original security informations for
10288           MONO_WRAPPER_MANAGED_TO_MANAGED.
10289         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
10290           that is a placeholder and only its address should be used.
10291         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
10292           that is a placeholder and only its address should be used.
10293
10294 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
10295
10296         Begin implementing COM Interop.
10297         * appdomain.c: Increment corlib version.
10298         * class.c: Set ComImport classes' parent to __ComObject.
10299         * loader.c: Mark cominterop methods as such.
10300         * domain.c: Add __ComObject class to MonoDefaults structure.
10301         * image.c: Add 2 hashtables to the image for COM Interop related methods
10302         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
10303         using the mempool allocator
10304         
10305         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
10306         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
10307         declaration for mono_metadata_type_dup_mp.
10308         
10309         * debug-helpers.c: Added strings for two additional wrapper types
10310         * object.c: Create proxy objects for ComImport classes
10311         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
10312         and added __ComObject class to MonoDefaults structure.
10313         
10314         * object-internals.h: Finish MonoRealProxy definition, and add definition of
10315         MonoComInteropProxy and MonoComObject.
10316         
10317         * marshal.c: Added support for COM Interop
10318         (signature_cominterop): Converts managed signature to corresponding
10319         unmanaged COM signature.
10320         (cominterop_get_function_pointer): gets unmanaged function pointer via
10321         COM object vtable
10322         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
10323         (cominterop_get_method_interface): returns interface type that method is defined on
10324         (mono_mb_emit_cominterop_call): emits native call to function pointer
10325         gotten from vtable
10326         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
10327         that matches signature of unmanaged function.
10328         (cominterop_get_native_wrapper): wrapper around adjusted method call.
10329         (cominterop_get_invoke): forwards call from proxy to __ComObject
10330         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
10331         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
10332         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
10333         
10334         * marshal.h: Added Marshal icall declarations.
10335         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
10336         so we can access them in finalizer
10337         
10338 2006-07-14  Dick Porter  <dick@ximian.com>
10339
10340         * object.c (mono_type_initialization_cleanup): Fix a race
10341         condition by temporarily commenting out the critical section
10342         deletion.
10343
10344 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * reflection.c (create_custom_attr): Fix some warnings.
10347         (create_custom_attr_data): Ditto.
10348         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
10349         types. Fixes #78855.
10350
10351 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
10354
10355         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
10356
10357 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
10358
10359         * reflection.c (resolve_object): Add support for DynamicMethod.
10360
10361         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
10362         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
10363
10364 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
10365
10366         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
10367         don't leak GPtrArray's pdata has we have no use (nor free) for it.
10368
10369 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
10370
10371         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
10372         Fixes #77888.
10373
10374 2006-06-30  Raja R Harinath  <rharinath@novell.com>
10375
10376         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
10377         slightly: remove a shadow local variable.
10378
10379 2006-06-29  Raja R Harinath  <rharinath@novell.com>
10380
10381         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
10382         definition that introduces the virtual function slot.
10383         Also fix Coverity #105.
10384
10385 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
10386
10387         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
10388         for dynamic assemblies. Fixes #78724.
10389
10390 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
10391
10392         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
10393         Fixes #78722.
10394
10395 2006-06-21  Martin Baulig  <martin@ximian.com>
10396
10397         * reflection.c
10398         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
10399         fixes #76484.
10400
10401 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
10402
10403         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
10404
10405 2006-06-20  Raja R Harinath  <rharinath@novell.com>
10406
10407         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
10408         nor TYPEREFs.
10409         * class.c (mono_class_create_from_typespec): Add 'context' argument.
10410         Inflate result if necessary.
10411         (mono_class_get_full): Remove old version.  Rename from
10412         'mono_class_get' and add 'context' argument.  Pass it to
10413         ..._create_from_typespec.
10414         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
10415         (mono_ldtoken): Revert change below.
10416
10417 2006-06-20  Martin Baulig  <martin@ximian.com>
10418
10419         * class.c (mono_ldtoken): Don't pass the generic context to
10420         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
10421
10422 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
10423
10424         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
10425         and later freeing it. Fixes #78638.
10426
10427 2006-06-15  Miguel de Icaza  <miguel@novell.com>
10428
10429         * icall.c (mono_class_get_throw): Revert over-zealous error
10430         throwing, the caller for mono_class_get_throw will cope with
10431         errors when classes are not properly initialized already.
10432
10433         The code still copes with loader exceptions though.
10434
10435         Fixes the regression in reftype1 and reftype3 from the CAS tests.
10436         
10437 2006-06-14  Miguel de Icaza  <miguel@novell.com>
10438
10439         Fixes the `make run1' version of RuntimeAbort (to be commited,
10440         source is in Bugzilla).
10441         
10442         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
10443         FALSE on class loading failure instead of returning true.
10444
10445         * class.c (mono_class_create_from_typedef): It is possible for
10446         mono_metadata_interfaces_from_typedef_full to fail if a class is
10447         not found, cope with this.
10448         
10449
10450 2006-06-14  Dick Porter  <dick@ximian.com>
10451
10452         * socket-io.c: 
10453         * process.c: Fix a bunch of signed/unsigned warnings from gcc
10454         4.1.1
10455
10456 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
10457
10458         * culture-info-table.h : oops, forgot to make it nsync with r61548.
10459
10460 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
10461
10462         * icall.c: Another fix for building mono in Visual Studio.
10463
10464 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
10465
10466         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
10467         
10468 2006-06-09  Martin Baulig  <martin@ximian.com>
10469
10470         * debug-mono-symfile.c: Put this back and really fix it this
10471         time. Sorry for all the trouble.
10472
10473 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
10474
10475         * icall.c (mono_class_get_throw): Fix a warning.
10476         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
10477         ReflectionTypeLoadException if needed. Fixes #78606.
10478
10479         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
10480         (mono_class_init): Ditto.
10481
10482         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
10483         ref_only exceptions.
10484         (mono_loader_clear_error): Make this work even if there is no error.
10485
10486 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
10487
10488         * object-internals.h marshal.c marshal.h icall.c: Implement method 
10489         Marshal.GetComSlotForMethodInfo using internal call.
10490
10491 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
10494         a function for signalling it.
10495
10496         * class.c (mono_class_from_typeref): Use the new kind of loader error when
10497         a referenced assembly is not found.
10498
10499         * loader.c (mono_loader_error_prepare_exception): Add support for 
10500         LOADER_ERROR_ASSEMBLY. Fix formatting.
10501
10502 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
10503
10504         * domain.c appdomain.c class-internals.h marshal.c: Add support 
10505         for VARIANT marshalling on windows and increment corlib version
10506         since Variant struct was added.
10507
10508 2006-06-03  Miguel de Icaza  <miguel@novell.com>
10509
10510         * debug-mono-symfile.c: Revert Martin's previous patch which broke
10511         stack trace line information:
10512
10513         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
10514         (Martin) when looking up B which is between A and C, return A not C.
10515
10516         Bug is #78573.
10517
10518         Thanks to Alexander Olk for tracking this down.
10519
10520 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
10521
10522         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
10523         
10524         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
10525         avoid clobbering its value.
10526         (mono_string_to_lpstr): Fix a warning on windows.
10527
10528 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
10529
10530         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
10531
10532         * reflection.c loader.c: Removed references to 'dummy' flag.
10533
10534         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
10535
10536         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
10537         it gets GC tracking.
10538
10539         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
10540         GC tracking.
10541         
10542         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
10543
10544         * marshal.c threadpool.c: Update callers of mono_async_result_new.
10545
10546         * appdomain.c: Bump corlib version.
10547
10548 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
10549
10550         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
10551         CEE_STIND_REF when working with object references.
10552
10553 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
10556         Fixes #78539.
10557
10558 2006-05-30  Miguel de Icaza  <miguel@novell.com>
10559
10560         * loader.c (method_from_memberref): Fix argument value for
10561         mono_loader_set_error_method_load (I was passing the MonoClass
10562         instead of the class name char *).
10563
10564 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
10565
10566         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
10567         CEE_STIND_REF when working with object references.
10568
10569 2006-05-30  Martin Baulig  <martin@ximian.com>
10570
10571         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
10572         mono_method_full_name() change and replace the ':' with a '.'
10573         here.
10574
10575 2006-05-30  Martin Baulig  <martin@ximian.com>
10576
10577         * debug-mono-symfile.c
10578         (mono_debug_symfile_lookup_location): Fix the algorithm:
10579         when looking up B which is between A and C, return A not C.
10580
10581 2006-05-29  Martin Baulig  <martin@ximian.com>
10582
10583         * mono-debug.h
10584         (MonoDebugMethodInfo): Make the typedef public.
10585         (MonoDebugSourceLocation): New public struct.
10586
10587         * mono-debug.c
10588         (mono_debug_source_location_from_address): Removed.
10589         (mono_debug_source_location_from_il_offset): Removed.
10590         (mono_debug_il_offset_from_address): Removed.
10591         (mono_debug_address_from_il_offset): Removed.
10592         (mono_debug_lookup_method): New public function.
10593         (mono_debug_lookup_source_location): New public function; replaces
10594         the old mono_debug_source_location_from_*() functions; see the
10595         inline documentation.
10596         (mono_debug_free_source_location): New public function.
10597         (mono_debug_print_stack_frame): New public function; see the
10598         inline documentation.
10599
10600         * debug-mono-symfile.c
10601         (mono_debug_find_source_location): Renamed into
10602         mono_debug_symfile_lookup_location(); only take a
10603         `MonoDebugMethodInfo *' and an `offset' argument; added inline
10604         documentation.
10605         (mono_debug_find_method): Renamed into
10606         mono_debug_symfile_lookup_method().
10607
10608 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * assembly.c (mono_assembly_open_full): Dont overwrite the status
10611         returned by mono_image_open_full ().
10612
10613         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
10614         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
10615         #78517.
10616
10617         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
10618         #78518.
10619
10620 2006-05-27  Miguel de Icaza  <miguel@novell.com>
10621
10622         * class.c (mono_class_from_typeref): handle missing images
10623         earlier, deals with bug #78418.   Refactor code; 
10624
10625         Fix a warning introduced in my previous commit (some stale code
10626         from before I revisited my patch).
10627
10628         * class.c (mono_class_create_from_typedef): On failure, remove the
10629         class from the MonoImage->class_cache as the class is not
10630         initialized;   Fixes the leak pointed out by Paolo.
10631
10632 2006-05-25  Dick Porter  <dick@ximian.com>
10633
10634         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
10635         DeleteCriticalSections until I figure out which one may still be
10636         sometimes locked when mono_thread_cleanup is called.
10637
10638 2006-05-24  Dick Porter  <dick@ximian.com>
10639
10640         * threads.c (mono_thread_cleanup): Move the threading cleanup out
10641         of mono_thread_manage and back into its own function, so it can be
10642         called after the finalizer thread has finished.
10643
10644         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
10645
10646 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
10649         Fixes #78495.
10650
10651         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
10652         with non-blittable elements.
10653         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
10654
10655 2006-05-24  Martin Baulig  <martin@ximian.com>
10656
10657         * mono-debug-debugger.h (MonoDebuggerEvent): Added
10658         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
10659
10660         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
10661         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
10662         `mono_debugger_event_handler' to NULL.
10663
10664 2006-05-24  Martin Baulig  <martin@ximian.com>
10665
10666         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
10667
10668 2006-05-24  Martin Baulig  <martin@ximian.com>
10669
10670         * mono-debug-debugger.h
10671         (mono_debugger_create_notification_function): Added
10672         `MonoCodeManager *' argument.
10673
10674 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
10675
10676         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
10677
10678 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
10679
10680         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
10681         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
10682         implementation.
10683
10684 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
10685
10686         * icall.c: precise GC support: objects can't be stored in unmanaged
10687         memory anymore, even if they are kept alive by other references: since
10688         they can move the GC needs to be able to always find them.
10689
10690 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10691
10692         * object.c: precise GC support for static fields. Support
10693         for moving GCs: write barriers and pinned allocation for interned
10694         strings.
10695
10696 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
10697
10698         * domain.c, domain-internals.h: precise GC support for the MonoDomain
10699         structure.
10700
10701 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10702
10703         * class.c, gc.c: sgen and precise GC updates.
10704
10705 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
10706
10707         * marshal.h, marshal.c: added write barrier wrapper and precise type
10708         fixes.
10709
10710 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
10711
10712         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
10713         support.
10714
10715 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
10716
10717         * reflection.c: precise and sgen GC updates.
10718
10719 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
10720
10721         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
10722
10723 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
10724
10725         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
10726
10727 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
10728
10729         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
10730         MONO_TYPE_OBJECT. Fixes #78462.
10731
10732 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
10733
10734         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
10735         and blittable types.
10736
10737 2006-05-17  Miguel de Icaza  <miguel@novell.com>
10738
10739         * class.c (mono_class_get_exception_for_failure): Implement parts
10740         of a TODO: if the loader error is set (instead of the class
10741         error), we return a Loader exception that can be properly thrown
10742         elsewhere.
10743
10744         This was exposed by some Winforms 2.0 code that I tried to run
10745         (Atsushi pointed me to it).
10746
10747 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
10748
10749         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
10750         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
10751         
10752         * marshal.c (emit_marshal_vtype): Add limited support for 
10753         UnmanagedType.LPStruct. Fixes #78427.
10754
10755         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
10756         Applied a patch from kangaroo to fix #77523.
10757
10758 2006-05-17  Martin Baulig  <martin@ximian.com>
10759
10760         * threads.c
10761         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
10762         (debugger_thread_created): Removed.
10763         (debugger_thread_exited): Removed.
10764
10765 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10768
10769         * object-internals.h (MonoReflectionResource): Sync with managed version.
10770
10771 2006-05-12  Wade Berrier <wberrier@novell.com>
10772
10773         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
10774
10775 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
10776
10777         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
10778         functions try to allocate from the image mempool.
10779
10780 2006-05-12  Dick Porter  <dick@ximian.com>
10781
10782         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
10783
10784 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
10785
10786         * object.c: The FieldGetter and FieldSetter methods require the full
10787         name of the class, not only the name. Fixes bug #78277.
10788
10789 2006-05-11  Miguel de Icaza  <miguel@novell.com>
10790
10791         * loader.c (method_from_memberref): Do not pass the NULL klass to
10792         mono_loader_set_error_() methods.  Pass the non-NULL value
10793         (class). 
10794
10795 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
10796
10797         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
10798         (mono_assembly_close): Null out assembly->image->references after freeing it.
10799
10800         * image.c (mono_image_close): Free image->references.
10801         
10802         * reflection.c (mono_image_basic_init): Fix a small memory leak.
10803
10804 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
10805
10806         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
10807         before checking if it's NULL (g_assert).
10808
10809 2006-05-10  Martin Baulig  <martin@ximian.com>
10810
10811         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
10812         I thought I already killed that two months ago, but now it somehow reappeared.
10813
10814 2006-05-10  Martin Baulig  <martin@ximian.com>
10815
10816         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
10817
10818 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
10819
10820         * reflection.c: Allocate memory for dynamically created methods in the image
10821         mempools.
10822
10823 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
10824
10825         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
10826         don't use the ad pointer before checking if it's NULL (g_assert).
10827
10828 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
10829
10830         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
10831         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
10832
10833         * marshal.c: Allocate all signatures from mempools.
10834
10835         * marshal.c: Allocate some more signatures from mempools.
10836
10837 2006-05-09  Miguel de Icaza  <miguel@novell.com>
10838
10839         * object.c (mono_load_remote_field): The code used to provide a
10840         temporary variable for returning results if the user did not
10841         provide a result pointer.  But our temporary variable was allocted
10842         on the satck.
10843
10844         Fix calling code to always pass a result area.   Coverity ID 103.
10845
10846 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
10847
10848         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
10849         value, not the old. Fixes #78312.
10850         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
10851
10852         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
10853         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
10854         per-image cache.
10855
10856         * assembly.c (mono_assembly_close): Free image->references.
10857
10858         * assembly.c (mono_assembly_names_equal): Fix a warning.
10859         (mono_assemblies_cleanup): Cleanup more global data.
10860
10861         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
10862
10863         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
10864         ptr_cache and image->modules.
10865
10866         * image.c (mono_image_init): Allocate array_cache lazily.
10867         
10868 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10869
10870         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
10871         behavior was changed recently and has bad side effects.
10872
10873 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
10874
10875         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
10876         
10877         * assembly.c (mono_assembly_close): Remove a debug printf.
10878
10879         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
10880
10881         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
10882         to also allow for temporary references between mono_image_open ()/close ().
10883
10884         * domain.c (get_runtimes_from_exe): Add a FIXME.        
10885
10886 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
10887
10888         * marshal.c: Fix support for dynamic methods.
10889
10890         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
10891
10892         * marshal.c (mono_marshal_cleanup): New cleanup function.
10893
10894         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
10895         image mempools.
10896
10897         * class.c (mono_class_init): Fix leaking class->nested_classes.
10898
10899         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
10900
10901         * image.c (mono_image_init): Initialize the new cashes.
10902
10903         * image.c (mono_image_close): Destroy the new cashes.
10904
10905         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
10906
10907         * mempool.c (mono_mempool_strdup): New helper function.
10908
10909         * class-internals.h: Add prototype for mono_loader_unlock ().
10910
10911         * domain.c (mono_jit_info_table_find): Fix a warning.
10912         (mono_debugger_check_runtime_version): Ditto.
10913
10914         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
10915         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
10916         functions to these modules.
10917
10918         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
10919         metadata modules.
10920         
10921         * marshal.c (mono_free_bstr): Fix a warning.
10922
10923         * assembly.c (mono_assembly_open_full): Fix another small leak.
10924
10925         * object.c: Fix some unload leaks in the remoting code.
10926
10927         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
10928         function.
10929
10930         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
10931
10932         * reflection.c: Fix some unload leaks in dynamic assemblies.
10933
10934 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
10935
10936         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
10937         * marshal.h: Add BSTR support on Win32
10938         * icall.c: Add BSTR icalls
10939         * metadata.h: Add BSTR enums
10940
10941 2006-04-28  Miguel de Icaza  <miguel@novell.com>
10942
10943         Work to catch the crash from #76795 and turn it into an
10944         exception.   As I stubbed out pieces of the VisualBasic support,
10945         I found a number of places where the code was failing and I added
10946         checks to those places. 
10947         
10948         * metadata.c (do_mono_metadata_parse_generic_class): Make this
10949         function return a status code.  If we fail to parse the signature
10950         from mono_metadata_parse_generic_inst, return FALSE.
10951
10952         * loader.c (mono_get_method_from_token): If we fail to load the
10953         method (mono_class_get) return NULL.   
10954
10955         * (method_from_memberref): Return NULL if we are unable to parse
10956         the method signature
10957
10958         (mono_loader_error_prepare_exception): Since we now use the
10959         loader_error flag internally to stop processing, and obtaining
10960         exceptions that might be thrown will walk this code path the
10961         proper way of going from a MonoLoaderError into a
10962         MonoException was convoluted.   This new routine encapsulates the
10963         process of turning the error into an exception and *clearing* the
10964         error afterwards.
10965         
10966 2006-04-27  Miguel de Icaza  <miguel@novell.com>
10967
10968         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
10969         with missing assemblies), and to cope with:
10970
10971                 * Missing fieldref from a non-existing assembly.
10972                 * Missing methodref from a non-existing assembly.
10973
10974         The first batch of work to address *some* of the issues from 76661.
10975         
10976         * object.c (mono_class_create_runtime_vtable): If we fail to
10977         initialize the class raise the exception here. 
10978
10979         * metadata.c (mono_class_get_overrides_full): If any methods fail
10980         to load return the failure to the caller.
10981
10982         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
10983         flagging assemblies that failed to load.   
10984
10985         Do not crash if we are unable to load the assembly.
10986
10987         (mono_assembly_close): Do nothing with REFERENCE_MISSING
10988         assemblies. 
10989
10990         * loader.c (mono_loader_set_error_type_load): Change the
10991         convention to always pass unallocated strings, so we make our own
10992         copies (I know our own code had duplicated strings before, but
10993         this keeps the normal conventions).
10994         (method_from_memberref): Call mono_loader_set_error_method_load
10995         for all possible failures of loading the class. 
10996         Remove assert, turn into a loader error.
10997
10998         (mono_loader_error_to_exception): Move this routine from mini
10999         (mini_loader_error_to_exception) there was no need to have that in
11000         mini. 
11001
11002         * class.c (mono_class_from_typeref): If we were not able to load
11003         the assembly with mono_assembly_load_reference, call the
11004         mono_loader_set_error_type_load to register the problem.
11005
11006         (mono_class_setup_fields): If we fail to load the type from
11007         mono_metadata_parse_type_full, call mono_class_set_failure and
11008         break from the loop.
11009
11010         If class->exception_type is set, we do not layout the fields as
11011         that might crash the runtime, and instead return (from breaking
11012         from the previous loop).
11013
11014         (mono_class_setup_vtable): This now returns a boolean indicating
11015         whether the table was properly setup.   The decision is driven by
11016         mono_class_get_overrides_full which might run into non-existing
11017         methods. 
11018         
11019         (mono_class_init): Returns TRUE on success or FALSE if there was a
11020         problem in loading the type (incorrect assemblies, missing
11021         assemblies, methods, etc).
11022
11023         When we call mono_class_setup_fields we also check for a potential
11024         error inside this call (either a class exception or a general
11025         loader exception).
11026
11027         (mono_class_create_from_typedef): If the parent fails to load
11028         (calling mono_class_get_full) return NULL.
11029         
11030         ** Important **
11031
11032         calls to mono_metadata_parse_type_full should be checked
11033         everywhere and set the mono_class_set_failure
11034         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
11035
11036         The current patch checks the places where my manually constructed
11037         tests show the errors are showing up, but we should do it
11038         everywhere. 
11039
11040         ** Important2 **
11041
11042         mono_class_init return values should be tested everywhere, like
11043         the previous case this is something that we should audit
11044         everywhere and not only on the cases exposed by the tests I
11045         created. 
11046
11047 2006-04-26  Miguel de Icaza  <miguel@novell.com>
11048
11049         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
11050         boolean parameter and instead pass the information on `options'
11051         parameter (FileOptions).
11052
11053         * icall.c: Register the new signature for MonoIO.Open.
11054
11055         * debug-helpers.c (dis_one): Trying to understand how coverity
11056         works.  Fix Run 5, item 78.
11057
11058 2006-04-26  Dick Porter  <dick@ximian.com>
11059
11060         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
11061         dereference.
11062
11063 2006-04-25  Martin Baulig  <martin@ximian.com>
11064
11065         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
11066
11067         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
11068         debugger_thread_created().
11069         (debugger_gc_push_all_stacks): Don't handle the main thread in any
11070         special way.
11071         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
11072         (mono_debugger_finalize_threads): New function; undo the effects
11073         of mono_debugger_init_threads().
11074         (mono_debugger_create_all_threads): Removed.
11075
11076 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * image.c (mono_image_close): Tidy up trace messages.
11079
11080         * assembly.c (mono_assembly_close): Ditto.
11081
11082         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
11083         no longer references an already freed assembly. Fixes #78168.
11084
11085 2006-04-21  Dick Porter  <dick@ximian.com>
11086
11087         * threads.c (mono_thread_detach): Fix reference counting when
11088         detaching threads.
11089
11090 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
11091
11092         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
11093         #78155.
11094
11095 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11096
11097         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
11098         (mono_type_to_stind): Ditto.
11099
11100         * marshal.c: Use the new helper functions to simplify code.
11101
11102         * image.c (mono_image_close): Add some code for help debug assembly unloading
11103         problems.
11104
11105         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
11106         image mempool.
11107
11108         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
11109         assembly was already loaded in another appdomain. Fixes #78083.
11110
11111 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
11114         referenced assemblies.
11115         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
11116
11117         * domain.c (mono_domain_free): Add a trace message.
11118
11119         * appdomain.c (add_assemblies_to_domain): Ditto.        
11120
11121         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
11122         field.  
11123
11124 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11125
11126         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
11127
11128 2006-04-12  Martin Baulig  <martin@ximian.com>
11129
11130         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
11131         `USE_INCLUDED_LIBGC'.   
11132
11133 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11134
11135         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
11136         the patch contains ../ and a small directory name later. Hopefully fixes
11137         #78035.
11138
11139 2006-04-10  Martin Baulig  <martin@ximian.com>
11140
11141         Clean up the debugger's thread-handling code.
11142
11143         The debugger's thread-handling code has been moved from
11144         ../mini/debug-debugger.c to threads.c.  We now iterate directly
11145         over the `threads' hash, keep track of exiting threads and also
11146         use proper locking.
11147
11148         We can now debug XSP and XSP based applications with the debugger.
11149
11150         * object-internals.h (MonoThread): Added `gpointer end_stack'.
11151
11152         * threads.h
11153         (MonoThreadCallbacks): Removed; this was only used by the debugger.
11154         (mono_install_thread_callbacks): Likewise.      
11155
11156         * threads.c (mono_thread_callbacks): Removed.
11157         (debugger_thread_created, debugger_thread_exited): New static functions.
11158         (start_wrapper): Call debugger_thread_created().
11159         (thread_cleanup): Call debugger_thread_exited().
11160         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
11161         (mono_debugger_init_threads): New public function.
11162         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
11163         iterate directly over the `threads' hash and also use proper locking.
11164
11165         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
11166
11167         * mono-debug-debugger.h
11168         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
11169
11170 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11171
11172         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
11173         argument type=array. Fixes #78057.
11174
11175 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
11176
11177         * culture-info-table.h : regenerated. Fixed bug #69652.
11178
11179 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11180
11181         * loader.c metadata.c: Reapply a variant r59116.
11182         
11183         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
11184
11185         * class.c (mono_class_setup_interface_offsets): New internal function.
11186
11187         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
11188         interfaces too. Fixes #77398.
11189
11190         * reflection.c (encode_cattr_value): Add support for 
11191         parameter type=object, argument type=array.
11192         (load_cattr_value): Ditto. Fixes #77916.
11193
11194         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
11195         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
11196
11197         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
11198         a byval char array and CharSet is Ansi.
11199
11200         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
11201
11202 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
11203
11204         * metadata.c: Add some locking comments.
11205         
11206         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
11207         mempool.
11208         (mono_metadata_free_method_signature): Don't free the signature itself.
11209
11210         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
11211
11212         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
11213         reference the same MonoImage.
11214         (mono_assembly_load_from_full): Add an assert.
11215
11216 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * image.c (mono_image_close): Don't put the image we are about to free into the
11219         loaded_images_guid_hash.
11220
11221         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
11222         to reduce code duplication.
11223
11224         * marshal.c: Register the native functions called by this module as icalls, to
11225         somewhat centralize the creation of MonoMethodSignature's.
11226
11227         * loader.c (mono_method_signature): Add a cache for method signatures.
11228
11229         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
11230         the parameter attributes of a method.
11231         (mono_metadata_parse_method_signature_full): Refactored the computation of
11232         parameter attributes into a separate function. Also avoid one allocation in
11233         most cases.
11234
11235         * assembly.c (mono_assembly_close): Ditto.
11236
11237         * image.c (mono_image_close): Log trace messages with INFO level.
11238
11239         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
11240
11241         * image.c reflection.c: Correct reference counting of image modules.
11242         
11243         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
11244         of this function from the image mempool.
11245         
11246         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
11247         to allow more cached types to be used.
11248
11249         * mono-debug.c (mono_debug_add_method): Appled patch from
11250         David S. Miller  <davem@sunset.davemloft.net>: Access 
11251         minfo->lexical_blocks[] entry elements using read32().
11252
11253 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
11254
11255         * loader.c (mono_free_method): No longer free the method header for non-dynamic
11256         methods as it is allocated from the mempool.
11257
11258         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
11259         image mempool.
11260
11261         * metadata-internals.h: Add comments describing the reference counting scheme
11262         used for MonoImage and MonoAssembly.
11263
11264         * image.c assembly.c reflection.c: Rework reference counting of images and 
11265         assemblies so they are freed when the runtime is shut down. Free some 
11266         additional memory structures when an image is unloaded.
11267         
11268 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * class.c loader.c reflection.c: Allocate more data structures in
11271         the image mempool.
11272
11273 2006-03-31  Miguel de Icaza  <miguel@novell.com>
11274
11275         * icall.c
11276         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
11277         build on pre glib 2.4 systems.
11278
11279 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
11280
11281         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
11282
11283         * icall.c: Fix some warnings.
11284
11285 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
11286
11287         * culture-info-table.h : regenerated.
11288
11289 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
11290
11291         * threads.c, object-internals.h, verify.c: changed the culture caching
11292         code to use a normal MonoArray for storage so the GC can keep track of
11293         them easily. Fixed bits of the cache logic, too and simplified the
11294         code.
11295
11296 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
11297
11298         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
11299         thread for non-Boehm GCs.
11300
11301 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
11302
11303         * domain.c, object.c, domain-internals.h: reduce the amount of memory
11304         needed to keep track of the data for static fields.
11305
11306 2006-03-29  Raja R Harinath  <rharinath@novell.com>
11307
11308         Fix #75172
11309         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
11310         for interface classes.  Use 'num_methods' instead.
11311         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
11312         before using '->vtable_size' field.
11313
11314 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
11315
11316         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
11317         doesn't contain managed pointers, so use a normal hashtable.
11318
11319 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
11320
11321         * reflection.c, class-internals.h, domain.c: fixed handling of types
11322         used as values for objects in custom attributes (bug #77915):
11323
11324 2006-03-24  Martin Baulig  <martin@ximian.com>
11325
11326         * class.c (mono_class_setup_fields): Added support for generic
11327         instances; fixes #77580.
11328
11329 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11330
11331         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
11332
11333 2006-03-24  Dick Porter  <dick@ximian.com>
11334
11335         * file-io.c (get_file_attributes): More stat macro breakage.
11336         Fixes bug 77759.
11337
11338 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
11339
11340         * profiler.c: added the file=filename option in the default profiler
11341         to output the profile data to filename.
11342
11343 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11344
11345         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
11346         bug #77877.
11347
11348 2006-03-22  Martin Baulig  <martin@ximian.com>
11349
11350         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
11351         allocated `MonoClassField *' in `fb->handle'.
11352
11353 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11354
11355         * class.c, image.c, metadata-internals.h: implemented new mechanism to
11356         allocate interface ID to save memory and allow better ID reuse on
11357         appdomain unload. setup_generic_vtable () removal from Martin.
11358
11359 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
11360
11361         * object.h, appdomain.c, domain.c, exception.c, icall.c,
11362         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
11363         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
11364         write barriers for reference stores with managed objects accessed with
11365         C structures in the runtime and in embedding programs.
11366
11367 2006-03-20  Raja R Harinath  <rharinath@novell.com>
11368
11369         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
11370         'interface_id' and 'max_interface_id' fields of MonoClasses
11371         representing open generic types.
11372
11373 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
11374
11375         * object.h, object.c, icall.c: added functions to deal with
11376         storing valuetypes that contain references in managed objects.
11377         * reflection.c, string-icalls.c, threads.c, marshal.c: small
11378         fixes and comments around uses of mono_array_addr ().
11379
11380 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
11381
11382         * object.h, icall.c, monitor.c: object.GetHashCode ()
11383         implementation that supports the moving garbage collector.
11384
11385 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
11386
11387         * icall.c, threads-types.h, threads.c: implemented finalizer for
11388         LocalDataStoreSlot.
11389
11390 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * metadata.c (mono_type_size): Add a fixme.
11393         (mono_type_stack_size): Ditto.
11394
11395         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
11396         'type_forwarders' field.
11397
11398         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
11399         attribute from net 2.0.
11400
11401         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
11402         from class.c.
11403
11404         * class.c (mono_class_setup_fields): Fix a warning.
11405         
11406         * class.c (mono_class_from_name): Add support for assemblyref entries
11407         in the EXPORTEDTYPE table.
11408
11409         * reflection.c: Add support for handling type forwarders under net 2.0.
11410
11411         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
11412         
11413 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
11414
11415         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
11416         overwriting entries in ModuleBuild->types, also clean up the code
11417         a little. Fixes #77774.
11418
11419 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
11420
11421         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
11422         load friend assembly info when present.
11423
11424 2006-03-14  Raja R Harinath  <rharinath@novell.com>
11425
11426         Fix crasher on gtest-158.cs.
11427         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
11428         the return value if the MonoClass we want is yet in an
11429         inconsistent state.
11430         * class.c (mono_class_create_from_typedef): Add an comment
11431         explaining an order dependency between mono_class_setup_parent and
11432         mono_class_setup_mono_type.
11433
11434 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
11435
11436         * class.c: documentation updates and events bug fix.
11437
11438 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11439
11440         * class.c: some cleanup, locking fixes.
11441
11442 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
11443
11444         * class.c: fix the generics code to setup nested
11445         type info to the instantiated type (bug #77770).
11446
11447 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11448
11449         * marshal.c: fixed a few type correctness issues.
11450
11451 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11452
11453         * loader.c: the Set/Get/Addrtess array methods should be public.
11454
11455 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
11456
11457         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
11458         
11459         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
11460         info->wrapper.
11461
11462 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
11465
11466         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
11467
11468         * mempool.c (mono_mempool_alloc): Speed this up a bit.
11469         (mono_mempool_alloc0): Ditto.
11470
11471 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11472
11473         * socket-io.c:
11474         (create_object_from_sockaddr): it was allocating 4 extra bytes
11475         for the AF_UNIX data. Fixes bug #77747.
11476
11477 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
11480
11481 2006-03-09  Dick Porter  <dick@ximian.com>
11482
11483         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
11484         Fixes bug 76966 again.
11485
11486 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
11487
11488         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
11489         names from r57532
11490         * appdomain.c: Bumped corlib version to 48 (due to r57532)
11491
11492 2006-03-07  Martin Baulig  <martin@ximian.com>
11493
11494         * object.c
11495         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
11496
11497 2006-03-07  Martin Baulig  <martin@ximian.com>
11498
11499         * class.c
11500         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
11501         regression introduced in r56970; see gtest-252.cs.
11502
11503         * loader.c (mono_get_method_constrained): Correctly handle generic
11504         methods; see gtest-253.cs.
11505
11506 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
11507
11508         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
11509
11510 2006-03-04  Martin Baulig  <martin@ximian.com>
11511
11512         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
11513         compute the parent type at runtime, just like we're already doing
11514         it for interfaces.
11515
11516         * reflection.c
11517         (mono_reflection_bind_generic_parameters): Don't compute the
11518         parent type anymore.
11519
11520         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
11521
11522 2006-03-04  Martin Baulig  <martin@ximian.com>
11523
11524         * mono-debug-debugger.h
11525         (mono_debugger_create_notification_function): Allocate memory at
11526         runtime and return a pointer to it.
11527
11528 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * assembly.c: Fix windows build.
11531         
11532         * assembly.c: Fix build.
11533
11534         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
11535
11536         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
11537         
11538 2006-03-03  Dick Porter  <dick@ximian.com>
11539
11540         * process.c
11541         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
11542         Check parameters before dereferencing them.  Fixes Aaron's part of
11543         bug 77393.
11544
11545 2006-03-03  Raja R Harinath  <rharinath@novell.com>
11546
11547         Fix performance regression.
11548         * loader.c (find_method_in_class): Add 'from_class' argument.
11549         Rename 'klass' argument to 'in_class'.  The signature is compared
11550         against the method in 'in_class', and the corresponding method is
11551         returned from 'from_class'.
11552         (find_method): Walk both 'in_class' and 'from_class' in parallel.
11553         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
11554         type definition and generic instantiation in parallel.
11555         (mono_get_method_constrained): Update to changes.
11556
11557 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
11558
11559         * threads.c: make sure the domain is correct, too when doing
11560         mono_thread_attach ().
11561
11562 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
11563
11564         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
11565         windows. Fixes #77683.
11566
11567 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
11568
11569         * object.h, *: introduced specific way to set elements of an array
11570         of references to be used as write barrier. Still need to audit the
11571         uses of mono_array_addr.
11572
11573 2006-03-01  Miguel de Icaza  <miguel@novell.com>
11574
11575         * object-internals.h: New field to cache the assmebly name, patch
11576         from Tambet Ingo (tambet@ximian.com)
11577
11578 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
11579
11580         * decimal.h, class-internals.h, metadata-internals.h,
11581         file-io.h: mark a few function declarations as internal, to
11582         reduce the number of PLT entries.
11583
11584 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11585
11586         * file-io.c: fix typo in warning message.
11587
11588 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
11589
11590         * loader.c: on unix, lookup the "*A" version of a function
11591         if charset is auto as a second option before failing.
11592
11593 2006-02-28  Raja R Harinath  <rharinath@novell.com>
11594
11595         * class.h (mono_class_inflate_generic_method): Revert to two
11596         argument version.
11597         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
11598         (mono_class_inflate_generic_method_full): Add.
11599         * class.c (mono_class_inflate_generic_method_full): Rename from
11600         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
11601         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
11602         * loader.c, reflection.c: Update to changes.
11603
11604 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
11605
11606         * icall.c: const fixes and small improvements.
11607
11608 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11609
11610         * threadpool.c: for asynchronous connect(), enable the same workaround
11611         for BSD 6 as for the Mac. Fixes bug #77637.
11612
11613 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
11616         formatted classes. Fixes #77524.
11617
11618 2006-02-24  Raja R Harinath  <rharinath@novell.com>
11619
11620         * class.c (inflate_generic_type): Add a couple more
11621         micro-optimizations.
11622         (inflate_generic_context): Don't use the 'gmethod' from
11623         'inflate_with'.
11624         (mono_class_inflate_generic_method): If the method has generic
11625         parameters, but the passed-in context doesn't have a 'gmethod',
11626         create one.  Use the possibly simplified generic instantiation
11627         from the declaring class instead of the one passed in.
11628
11629 2006-02-24  Raja R Harinath  <harinath@gmail.com>
11630
11631         Make generic method signature and method header handling lazy.
11632         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
11633         (inflate_generic_header): Likewise.
11634         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
11635         parameter to avoid inflating types.
11636         (mono_get_inflated_method): Empty out.
11637         * class.h (mono_class_inflate_generic_method): Update to changes.
11638         * loader.c (mono_get_method_from_token): Don't parse signature for
11639         generic methods, nor methods of generic classes.
11640         (mono_method_signature): Rename from 'mono_method_signature'.
11641         Inflate signature on demand.
11642         (mono_method_get_header): Inflate method header on demand.
11643         * reflection.c: Update to changes.
11644
11645 2006-02-23  Raja R Harinath  <rharinath@novell.com>
11646
11647         * metadata.c (mono_metadata_inflate_generic_inst): If the
11648         instantiation is closed, don't bother expanding it in the new
11649         context.
11650         * class.c (inflate_generic_class): If the generic instantiation
11651         doesn't change after inflation, return the argument itself.
11652         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
11653         Add bounds checks.
11654         (inflate_generic_context): If neither the generic class nor the
11655         generic method instantiations change, return the original context.
11656         * reflection.c (mono_method_get_object): Do
11657         'mono_get_inflated_method' before accessing the ->klass field.
11658         (inflate_mono_method): Don't create a MonoGenericMethod unless
11659         necessary.
11660         (inflate_method): Don't pass a constructed type as the declaring
11661         type of a methodbuilder.
11662
11663 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
11664
11665         * object.c: fix memory overwrite.
11666
11667 2006-02-22  Dick Porter  <dick@ximian.com>
11668
11669         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
11670         it doesn't work any more.
11671         (mono_threads_request_thread_dump): Fix unused variable warnings.
11672
11673 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11674
11675         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
11676         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
11677         the public header file.
11678
11679 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
11680
11681         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
11682
11683 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
11684
11685         * class-internals.h, object.c: reduce the size of MonoVTable
11686         and store the interface_offsets array at negative offsets.
11687
11688 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
11689
11690         * metadata.c: tweak table descriptors data structures to reduce
11691         size and runtime relocations.
11692
11693 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11694
11695         * marshal.c: fix some types and opcodes to be type-safe
11696         in marshaling wrappers.
11697
11698 2006-02-21  Ankit Jain  <jankit@novell.com>
11699
11700         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
11701
11702 2006-02-21  Raja R Harinath  <rharinath@novell.com>
11703
11704         * metadata.c (get_constraints): Relax debugging checks for monodis.
11705
11706 2006-02-21  Ankit Jain  <jankit@novell.com>
11707
11708         * metadata.c (mono_metadata_load_generic_params): Move the code
11709         checking for ambiguous generic params from here to mono/dis/get.c
11710         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
11711
11712 2006-02-21  Raja R Harinath  <harinath@gmail.com>
11713
11714         Fix assertion triggered when compiling nemerle.
11715         * class.c (mono_get_shared_generic_inst): Rename from
11716         get_shared_inst and make non-static.
11717         * loader.c (mono_get_shared_generic_method): New.  Used to create
11718         the MonoGenericContext-equivalent of a MonoGenericContainer.
11719         (mono_get_method_from_token): Initialize the 'context' field of
11720         the created MonoGenericContainer.
11721         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
11722         * metadata.c (get_constraints): Add sanity check.
11723         * class-internals.h: Add new internal methods.
11724
11725         * reflection.c (verify_safe_for_managed_space): New sanity check.
11726         Currently checks that owner-less generic parameters aren't allowed
11727         in managed space.
11728         (mono_type_get_object): Use it.
11729         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
11730         that are now in mono_type_get_object.
11731         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
11732
11733 2006-02-19  Raja R Harinath  <harinath@gmail.com>
11734
11735         * metadata.c (mono_type_create_from_typespec): Rename from
11736         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
11737         argument and caching of types in the generic container.
11738         (unwrap_arrays, find_generic_param): Remove.
11739         * metadata-internals.h: Update.
11740         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
11741
11742 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
11743
11744         * class.c (mono_class_get_exception_for_failure): Fix a warning.
11745
11746         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
11747         return values. Fixes #77581.
11748
11749         * class.c (mono_fnptr_class_get): Switch name and name_space.
11750
11751         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
11752         classes and add support for [In, Out] attributes.
11753         (mono_marshal_free_asany): Ditto. Fixes #77524.
11754
11755 2006-02-18  Raja R Harinath  <harinath@gmail.com>
11756
11757         * class.c (mono_class_from_generic_parameter): Make more robust to
11758         incomplete MonoGenericContainers from monodis.
11759
11760 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11761
11762         * class-internals.h: added some more exception types.
11763         * class.c, metadata.c: added a few checks to handle missing
11764         types.
11765
11766 2006-02-17  Raja R Harinath  <rharinath@novell.com>
11767
11768         Use owner-less generic-params some more.
11769         * class.c (my_mono_class_from_generic_parameter): Remove.
11770         (mono_class_from_generic_parameter): Handle null image,
11771         param->name and param->owner.
11772         (mono_class_from_mono_type): Update.
11773         (mono_class_create_from_typespec): Remove 'container' parameter.
11774         If that parameter is non-null, the result is always inflated by
11775         'mono_class_get_full' anyway.
11776         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
11777         parameter.
11778         (mono_class_get_full): Update.
11779
11780         * class.c (inflate_generic_type) [GENERICINST]: If the generic
11781         instance is not open, don't bother inflating.
11782         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
11783         parse metadata for inflated classes.
11784         (_mono_class_get): Change GenericContext* parameter to
11785         GenericContainer*.
11786         (mono_class_create_from_typespec): Likewise.  Simplify, and
11787         implement trivially.  All the cases are handled in
11788         mono_class_from_mono_type.  Don't inflate returned class.
11789         (mono_class_get_full): Delegate GENERICINST optimization to
11790         inflate_generic_type.
11791         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
11792
11793 2006-02-16  Dick Porter  <dick@ximian.com>
11794
11795         * socket-io.c (create_object_from_sockaddr): Fix typo.
11796         (create_sockaddr_from_object): Check array lengths before
11797         potentially accessing items off the end.
11798         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
11799         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
11800         (ves_icall_System_Net_Sockets_Socket_Send_internal)
11801         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
11802         length checks to avoid wraparound overflows.
11803         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
11804         contents of the array of sockets
11805         (hostent_to_IPHostEntry2)
11806         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
11807         Check return value of inet_ntop ().
11808         (addrinfo_to_IPHostEntry): Fix typo
11809
11810 2006-02-16  Raja R Harinath  <rharinath@novell.com>
11811
11812         Type metadata parsing doesn't use generic-instantiation information.
11813         * metadata.c (mono_metadata_parse_array_full): Change
11814         MonoGenericContext* parameter to MonoGenericContainer*.
11815         (mono_metadata_parse_type_full): Likewise.
11816         (mono_type_create_from_typespec_full): Likewise.
11817         (mono_metadata_parse_mh_full): Likewise.
11818         (mono_metadata_parse_generic_inst): Likewise.
11819         (do_mono_metadata_parse_generic_class): Likewise.
11820         (do_mono_metadata_parse_type): Likewise.
11821         * metadata-internals.h: Update to changes.
11822         * class.c (mono_class_find_enum_basetype): Likewise.
11823         (mono_class_setup_fields): Likewise.
11824         (mono_class_create_from_typespec): Likewise.
11825         * loader.c (method_from_methodspec): Likewise.
11826         (mono_get_method_from_token): Likewise.
11827         (mono_method_get_header): Likewise.
11828
11829 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11830
11831         * marshal.c: handle additional GENERICINST case (patch from
11832         Thong Nguyen <tum@veridicus.com>).
11833         Fix a few cases where LDIND_I/STIND_I was used for references.
11834
11835 2006-02-16  Raja R Harinath  <rharinath@novell.com>
11836
11837         * reflection.c (mono_reflection_get_token): Remove unused variable.
11838
11839 2006-02-16  Martin Baulig  <martin@ximian.com>
11840
11841         * reflection.c (mono_reflection_get_token): Add support for fields
11842         in instantiated generic types.
11843
11844         * icall.c
11845         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
11846
11847 2006-02-15  Martin Baulig  <martin@ximian.com>
11848
11849         * icall.c
11850         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
11851         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
11852         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
11853         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
11854
11855 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
11856
11857         * class.c, metadata.c, metadata.h, object.c, icall.c,
11858         marshal.c: changed mono_type_get_underlying_type () to do
11859         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
11860         Fixed handling of instantiated generic valuetypes (bug #75479).
11861
11862 2006-02-15  Raja R Harinath  <rharinath@novell.com>
11863
11864         * metadata.c (mono_metadata_decode_signed_value): Simplify.
11865         Delegate to mono_metadata_decode_value, and work on the returned value.
11866
11867         * icall.c (ves_icall_MonoType_GetGenericArguments):
11868         Add consistency check here too.
11869         
11870 2006-02-15  Ankit Jain  <jankit@novell.com>
11871
11872         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
11873         char/short etc.
11874
11875 2006-02-15  Ankit Jain  <jankit@novell.com>
11876
11877         * metadata.c (mono_metadata_decode_signed_value): New function to decode
11878         signed values, used only for representing lower bounds of arrays.
11879         (mono_metadata_parse_array_full): Use new
11880         mono_metadata_decode_signed_value to decode lower bounds.
11881
11882 2006-02-14  Martin Baulig  <martin@ximian.com>
11883
11884         * reflection.c
11885         (mono_reflection_get_token): Support "MonoGenericMethod" and
11886         "MonoGenericCMethod" and allow generic instances / methods.
11887
11888 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
11889
11890         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
11891         to obtain the terminal size using an ioctl.
11892
11893         * object.c (mono_nullable_init): Revert this as nullable reference
11894         types are not valid.
11895         (mono_nullable_box): Ditto.
11896
11897 2006-02-09  Dick Porter  <dick@ximian.com>
11898
11899         * threads.c (mono_thread_detach): Drop a reference to the thread
11900         we're detaching.
11901
11902 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
11903
11904         * object.c (mono_nullable_init): Handle nullable reference types.
11905         (mono_nullable_box): Ditto. Fixes #77446.
11906
11907 2006-02-07  Martin Baulig  <martin@ximian.com>
11908
11909         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
11910
11911 2006-02-07  Ankit Jain  <jankit@novell.com>
11912
11913         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
11914         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
11915         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
11916         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
11917         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
11918         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
11919
11920 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
11921
11922         * class.c (mono_class_create_generic): Set type_token as well.
11923
11924         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
11925         compatible with MS.
11926
11927 2006-02-02  Martin Baulig  <martin@ximian.com>
11928
11929         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
11930         has never been used so far.
11931
11932 2006-02-02  Martin Baulig  <martin@ximian.com>
11933
11934         * mono-debug-debugger.h: Changed comment at the top of this file;
11935         the header is not installed, but it's safe to #include it from
11936         within the JIT.
11937
11938         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
11939         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
11940
11941 2006-02-02  Martin Baulig  <martin@ximian.com>
11942
11943         * mono-debug.h
11944         (MonoSymbolTable): Removed the `metadata_info' field.
11945
11946         * mono-debug.c
11947         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
11948
11949         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
11950         (mono_debugger_add_builtin_types): Removed.
11951         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
11952         (mono_debugger_create_notification_function): We now operate on a
11953         pre-allocated area; take a `gpointer' and return `void'.
11954
11955         * mono-debug-debugger.c
11956         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
11957         (mono_debugger_add_builtin_types): Removed.
11958
11959 2006-02-02  Martin Baulig  <martin@ximian.com>
11960
11961         * threads.c (mono_debugger_create_all_threads): New public method.
11962
11963 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11964
11965         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
11966         breaks on several platforms.
11967
11968 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
11969
11970         * assembly.c: the VS.NET build doesn't supply default values for
11971         MONO_ASSEMBLIES and MONO_CFG_DIR.
11972
11973 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
11976         helper function.
11977
11978         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
11979
11980         * loader.c (method_from_memberref): Fix a warning.
11981
11982         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
11983
11984         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
11985         with explicit layout. Fixes #77433.
11986
11987 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
11988
11989         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
11990         max_interface_id is initialized before using it. Fixes #77398.
11991         (ves_icall_Type_GetInterfaces): Ditto.
11992
11993 2006-01-30  Raja R Harinath  <rharinath@novell.com>
11994
11995         * metadata.c (mono_metadata_parse_method_signature_full): Don't
11996         allocate memory for parameter attributes when parsing memberref
11997         signatures.
11998         * loader.c (mono_loader_set_error_method_load): Don't warn.
11999         (method_from_memberref): Ensure MissingMethodException gets thrown
12000         if method is not found.  Make warning more informative.
12001
12002 2006-01-29  Raja R Harinath  <harinath@gmail.com>
12003
12004         Fix #77397
12005         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
12006         return true if is byref.
12007         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12008         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
12009         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
12010
12011 2006-01-27  Raja R Harinath  <rharinath@novell.com>
12012
12013         Fix tests/find-method.2.il
12014         * loader.c (find_method, find_method_in_class): Remove is_inflated
12015         argument.  Revert 2006-01-18 change.
12016         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
12017         is generic, search for method in its generic definition.
12018         * class.c (mono_class_setup_vtable_general): Print generic
12019         arguments of generic types in debugging printf.
12020
12021 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12022
12023         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
12024
12025         * threads.c (mono_threads_request_thread_dump): New helper function.
12026
12027 2006-01-25  Raja R Harinath  <rharinath@novell.com>
12028
12029         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
12030
12031 2006-01-25  Ankit Jain  <jankit@novell.com>
12032
12033         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
12034         move definition to ..
12035         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
12036         
12037 2006-01-25  Ankit Jain  <jankit@novell.com>
12038             Raja R Harinath  <rharinath@novell.com>
12039
12040         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
12041         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
12042         as necessary.
12043
12044 2006-01-25  Martin Baulig  <martin@ximian.com>
12045
12046         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
12047         `MonoDebuggerThread' into debug-debugger.c.
12048
12049 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12050
12051         * profiler.c: fix printing of data.
12052
12053 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
12054
12055         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
12056           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
12057
12058 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12059
12060         * object.c: fix deadlock related to string interning.
12061
12062 2006-01-23  Martin Baulig  <martin@ximian.com>
12063
12064         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
12065
12066         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
12067
12068 2006-01-23  Martin Baulig  <martin@ximian.com>
12069
12070         * mono-debug.h: Moved the prototypes of some functions which are
12071         used by the JIT here from mono-debug-debugger.h.
12072
12073 2006-01-21  Martin Baulig  <martin@ximian.com>
12074
12075         * Makefile.am: Don't install mono-debug-debugger.h.
12076
12077 2006-01-21  Martin Baulig  <martin@ximian.com>
12078
12079         * mono-debug-debugger.h: Enforce the private status of this header
12080         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
12081         Moved some stuff from mono-debugger-jit-wrapper.h here.
12082
12083 2006-01-20  Raja R Harinath  <rharinath@novell.com>
12084
12085         * class.c (mono_class_from_typeref): Add a sanity test to help
12086         catch lack of assembly load/search hooks.
12087
12088 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
12089
12090         * marshal.c (emit_struct_conv): Relax the fields with same offset
12091         check even more. Fixes #77230.
12092
12093 2006-01-18  Martin Baulig  <martin@ximian.com>
12094
12095         * loader.c (find_method_in_class): Added `gboolean is_inflated'
12096         argument; if false, we compare the uninstantiated signatures.
12097         (method_from_memberref): Compare the uninstantiated signatures;
12098         fixes #76417.
12099
12100 2006-01-18  Robert Jordan  <robertj@gmx.net>
12101
12102         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
12103         Clear the weak link. Fixes bug #77170.
12104
12105         * gc.c (mono_gchandle_free):
12106         Reflect *-gc.c changes (tiny optimization).
12107
12108 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
12109
12110         * metadata.c (mono_metadata_signature_dup): Applied patch from
12111         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
12112         Fixes #77288.
12113
12114 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12115
12116         * marshal.c (emit_struct_conv): Allow fields with the same offset when
12117         marshalling from native to managed code. Fixes #77230.
12118
12119 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12120
12121         * threadpool.c: fix problem (Mac only) when more than one asynchronous
12122         connect. Fixes bug #77020.
12123
12124 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12125
12126         * class.c: fixed id assignement for nested interfaces (bug #77275).
12127         Added also better info for --print-vtable debugging.
12128
12129 2006-01-12  Martin Baulig  <martin@ximian.com>
12130
12131         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
12132         interfaces on-the-fly; fixes #76625.
12133
12134         * class-internals.h
12135         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
12136         don't need that anymore.
12137
12138 2006-01-12  Miguel de Icaza  <miguel@novell.com>
12139
12140         * socket-io.c
12141         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
12142         To avoid initing the nested_classes when not needed I turned the
12143         PeerCredData as a toplevel internal class, as it has to be shared
12144         anyways. 
12145
12146         Fixes the CASA issue.
12147
12148 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12149
12150         * domain.c: Accessors for MonoJitInfo
12151
12152         * profiler-private.h: Add jitinfo to the end jit hook
12153
12154         * profiler.[ch]: Define new hooks, called after jitting which give
12155         the MonoJitInfo that was compiled
12156
12157 2006-01-10  Martin Baulig  <martin@ximian.com>
12158
12159         * class.c (mono_class_setup_events): Add support for generic
12160         classes; fixes #76440.
12161
12162 2006-01-06  Raja R Harinath  <rharinath@novell.com>
12163
12164         Fix #77160.
12165         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
12166         on passed-in method.
12167
12168 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12169
12170         * object.c (mono_runtime_invoke_array): Add Nullable support.
12171
12172         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
12173
12174 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
12175
12176         * file-io.c: Don't consider sockets as directory and avoid an endless
12177         loop. Fix bug #76966.
12178
12179 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12180
12181         * object.c (mono_nullable_init): New helper function.
12182         (mono_nullable_box): Ditto.
12183
12184         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
12185
12186         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
12187
12188         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
12189         
12190 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
12191
12192         * class.c (mono_class_is_assignable_from): Make T assignable to 
12193         Nullable<T>.
12194
12195 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
12196
12197         * appdomain.c: Bump corlib version to 46.
12198         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
12199         serialization purpose) and changed ves_icall_System_Reflection_
12200         Assembly_get_code_base signature to accept a boolean (to escape, or 
12201         not, the assembly code base).
12202
12203 2005-12-23  Dick Porter  <dick@ximian.com>
12204
12205         * icall.c: 
12206         * threads-types.h: 
12207         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
12208         CreateEvent icall now returns "created" boolean parameter.
12209
12210 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
12211
12212         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
12213         #76967.
12214
12215         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
12216         when attr_klass is an interface. Fixes #77045.
12217
12218 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * marshal.c (emit_struct_conv): Fix previous patch.
12221         
12222         * marshal.c (emit_struct_conv): Add a check for fields with the same
12223         offset.
12224
12225 2005-12-20  Raja R Harinath  <rharinath@novell.com>
12226
12227         Fix regression in Mono.C5.
12228         * class.c (mono_class_create_generic): If 'klass' is an interface
12229         set up the interface offsets.
12230         (mono_class_is_assignable_from): Don't throw away generic arguments.
12231
12232 2005-12-19  Raja R Harinath  <rharinath@novell.com>
12233
12234         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
12235         type parameters.
12236
12237 2005-12-15  Raja R Harinath  <rharinath@novell.com>
12238
12239         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
12240         dead store.
12241         (do_mono_metadata_parse_generic_class): Don't pass the current
12242         generic context when parsing the type being instantiated: it
12243         cannot use it, anyway.
12244
12245         * loader.c (method_from_memberref): Don't inflate a signature if
12246         it doesn't contain any type parameters.
12247
12248 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
12249
12250         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
12251
12252 2005-12-14  Martin Baulig  <martin@ximian.com>
12253
12254         * class.c
12255         (mono_type_get_name_recurse): Don't return null for type
12256         parameters and open generic classes.
12257         (mono_class_setup_methods): Don't exclude generic instances.
12258         (mono_get_unique_iid): Use different IDs for different
12259         instantiations of the same generic type.
12260         (mono_class_setup_vtable): Only use setup_generic_vtable() for
12261         open generic instances; create a normal vtable for closed generic
12262         instances.
12263         (mono_class_setup_vtable_general): We're now also called for
12264         closed generic instances.
12265
12266         * reflection.c
12267         (mono_reflection_bind_generic_parameters): Correctly use
12268         mono_metadata_lookup_generic_inst() everywhere.
12269
12270 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
12271
12272         * object.c (mono_class_create_runtime_vtable): Call 
12273         mono_class_setup_vtable ().
12274
12275         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
12276         function.
12277         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
12278         #76959.
12279
12280         * loader.c (mono_loader_set_error_type_load): Print the type load
12281         warnings to the console so they are more visible to the user.
12282         (mono_loader_set_error_method_load): Ditto.
12283
12284         * reflection.c (ensure_runtime_vtable): Revert the last change as it
12285         is still broken.
12286         
12287         * reflection.c (ensure_runtime_vtable): Fix build.
12288
12289         * reflection.c (ensure_runtime_vtable): Disable an optimization which
12290         doesn't work in all cases.
12291
12292 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
12293
12294         * object.c (mono_array_new_full): Treat a single dimensional array
12295         with 0 lower bounds as an szarray. Fixes #76973.
12296
12297         * reflection.c (custom_attr_visible): Really fix this.
12298
12299 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * reflection.c (custom_attr_visible): Allow nested public attributes
12302         as well.
12303
12304         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
12305         interface check.
12306
12307 2005-12-12  Raja R Harinath  <harinath@gmail.com>
12308
12309         * class.c (set_generic_param_owner): Delete.
12310         (mono_class_create_from_typedef): Don't set ->owner field of
12311         generic parameters to "param containers" of enclosing classes.
12312         * reflection.c (mono_reflection_initialize_generic_parameter):
12313         Likewise.
12314
12315 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * reflection.c (custom_attr_visible): Fix build.
12318
12319 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
12322         private attributes.
12323         
12324         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
12325         handling of null parameter defaults.
12326
12327 2005-12-09  Raja R Harinath  <rharinath@novell.com>
12328
12329         * class.c (mono_class_from_generic_parameter): Don't set
12330         klass->generic_container.
12331         (my_mono_class_from_generic_parameter): Likewise.
12332
12333 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
12334
12335         * reflection.c (load_public_key): Fix a warning.
12336         (method_encode_code): Fix unaligned accesses.
12337
12338 2005-12-07  Martin Baulig  <martin@ximian.com>
12339
12340         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
12341
12342         * reflection.c
12343         (write_generic_param_entry): Encode our custom attrs.
12344
12345         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
12346
12347 2005-12-07  Martin Baulig  <martin@ximian.com>
12348
12349         * reflection.c (encode_new_constraint): Removed; we don't use the
12350         `NewConstraintAttribute' anymore.
12351
12352 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
12355         not fire a TypeResolve event when Assembly.GetType () is called.
12356
12357 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
12358
12359         Beginning of support for nullable types in the runtime. Parts of
12360         this patch are from Martin.
12361
12362         * appdomain.c (MONO_CORLIB_VERSION): Bump
12363
12364         * domain.c (mono_init_internal): get the nullable type
12365
12366         * class.c (mono_class_is_nullable): New method
12367         (mono_class_get_nullable_param): New mehod
12368         (mono_class_create_generic): In types T? set cast_class to T
12369
12370         * class-internals.h (MonoDefaults): new nullable default class
12371         (mono_class_get_nullable_param, mono_class_get_nullable_param):
12372         new methods.
12373
12374 2005-12-05  Raja R Harinath  <rharinath@novell.com>
12375
12376         * metadata.c (select_container): New.  Refactor code to select the
12377         appropriate GenericContainer given the type of generic parameter
12378         we are looking for.
12379         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
12380         not a MonoGenericContext.  Use select_container.  Update parameters.
12381         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
12382         and MONO_TYPE_MVAR.
12383         (unwrap_arrays): Remove duplicate tests.
12384         (find_generic_param): Rename from 'has_same_context'.  Now walks a
12385         generic instantiated class to find any arguments that are generic
12386         parameters.
12387         (mono_type_create_from_typespec_full): Use find_generic_param to
12388         avoid evicting some generic instantiations from the typespec
12389         cache.
12390
12391 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
12392
12393         * reflection.c: fixed writing of doubles on ARM FPA.
12394
12395 2005-12-02  Robert Jordan  <robertj@gmx.net>
12396
12397         * icall.c: Fixed EventInfo.ReflectedType (#76829).
12398
12399 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12400
12401         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
12402         least on SUSE 10 they are not the same (on debian, they are just the
12403         same thing).
12404
12405 2005-12-01  Raja R Harinath  <rharinath@novell.com>
12406
12407         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
12408         DeclaringType for VARs and MVARs.
12409         * class.c (set_generic_param_owner): Fix initialization of owner
12410         fields.
12411
12412 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
12413
12414         * icall.c: fixed Enum.ToObject() to correctly convert the values.
12415
12416 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12417
12418         * threadpool.c: workaround for a bug that shows up on the Mac:
12419         select()+connect() on a blocking socket is not like it should
12420         be, so we proceed to connect() in that case, wasting the I/O
12421         threadpool thread until connect succeedes. Fixes bug #75436.
12422
12423 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12424
12425         * threadpool.c: fix typo when setting file descriptor states.
12426
12427 2005-11-28  Raja R Harinath  <rharinath@novell.com>
12428
12429         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
12430         * metadata.c (mono_metadata_parse_method_signature_full): Don't
12431         create a temporary signature container.
12432         (mono_metadata_parse_generic_param): Update to changes.
12433         (mono_type_create_from_typespec_full): Update to changes.
12434         * loader.c (method_from_memberref): Don't use a
12435         MonoGenericContainer while parsing a memberref signature.
12436         (method_from_methodspec): Remove dead-store of the 'container'
12437         variable.  It's overwritten before use.
12438
12439         * metadata.c (mono_type_create_from_typespec_full): Make debugging
12440         checks tighter.
12441         (mono_metadata_parse_generic_param): Likewise.
12442         * loader.c (find_method_in_class): Does not need a
12443         MonoGenericContainer.  Use 'mono_method_signature' rather than
12444         'mono_method_signature_full'.
12445         (find_method, mono_get_method_constrained, method_from_memberref):
12446         Update to changes.
12447
12448         * metadata.c (mono_type_create_from_typespec_full): Ensure that
12449         owner-less generic-parameters are never evicted from the typespec
12450         cache.
12451
12452         * loader.c (method_from_memberref): Don't use the current context
12453         when parsing signatures.
12454         (method_from_methodspec, mono_get_method_from_token): Update to changes.
12455
12456         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
12457         side-effects in g_assert.
12458         * loader.c (mono_get_method_from_token): Resolve klass earlier so
12459         that we don't potentially lose information.
12460
12461 2005-11-26  Dick Porter  <dick@ximian.com>
12462
12463         * icall.c:
12464         * threads.c: icalls to implement basic (ie, not named)
12465         System.Threading.Semaphore.
12466
12467 2005-11-24  Dick Porter  <dick@ximian.com>
12468
12469         * process.c
12470         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
12471         Use GetProcessId() if it's available.
12472
12473 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
12474
12475         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
12476
12477 2005-11-23  Raja R Harinath  <rharinath@novell.com>
12478             Ankit Jain  <jankit@novell.com>
12479
12480         * loader.c (mono_get_method_from_token): Initialize 'method' field
12481         of all generic parameters before parsing the signature.  Remove
12482         code that "fixed"-up MVAR references.
12483
12484 2005-11-23  Ankit Jain  <jankit@novell.com>
12485
12486         * metadata.c (mono_metadata_has_generic_params):
12487         (mono_metadata_load_generic_param_constraints):
12488         (mono_metadata_load_generic_params): Move duplicate code ...
12489         (mono_metadata_get_generic_param_row): ... here. Returns the
12490         first row-id in GenericParam table for a given owner (token).
12491         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
12492         prototype.
12493
12494 2005-11-23  Raja R Harinath  <rharinath@novell.com>
12495             Ankit Jain  <jankit@novell.com>
12496
12497         * metadata.c (mono_metadata_class_equal): Pass signature_only when
12498         comparing VARs too.
12499         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
12500         type->data.generic_param only if the type is an MVAR.
12501         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
12502         leak owner-less VARs and MVARs into managed space.
12503
12504 2005-11-21  Martin Baulig  <martin@ximian.com>
12505
12506         * class-internals.h
12507         (MonoMethod): Moved the `generic_container' here from
12508         `MonoMethodNormal' since we now also need it for
12509         `MonoMethodPInvoke';
12510         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
12511         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
12512         an union containing both `MonoMethodNormal' and
12513         `MonoMethodPInvoke'.
12514
12515         * loader.c
12516         (mono_get_method_from_token): Allow implementing generic methods
12517         as interncalls.
12518
12519         * threads.c
12520         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
12521         icall.
12522
12523 2005-11-17  Dick Porter  <dick@ximian.com>
12524
12525         * icall.c: 
12526         * process.h: 
12527         * process.c: Split the Process Start_internal icall into
12528         ShellExecuteEx_internal and CreateProcess_internal, which are
12529         called depending on whether UseShellExecute is true.  Fixes bug
12530         76670.
12531
12532         * appdomain.c (MONO_CORLIB_VERSION): Incremented
12533
12534 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
12535
12536         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
12537         'msize' parameters, use the information in 'mspec' instead.
12538         (emit_object_to_ptr_conv): Ditto.
12539
12540         * marshal.c (emit_struct_conv): Handle explicit layout structs with
12541         fields out of order. Fixes #76733.
12542
12543 2005-11-17  Ankit Jain  <jankit@novell.com>
12544
12545         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
12546
12547 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
12548
12549         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
12550           bug #76575.
12551
12552 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
12553
12554         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
12555         for types with non-auto layout. Fixes #76717.
12556
12557 2005-11-16  Ankit Jain  <jankit@novell.com>
12558
12559         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
12560         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
12561         if generic_context is null.
12562           (mono_metadata_generic_param_equal): param->owner can be null.
12563           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
12564         null.
12565
12566 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
12567
12568         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
12569         the correct value.
12570
12571 2005-11-15  Martin Baulig  <martin@ximian.com>
12572
12573         * object.c (set_value): Use mono_class_from_mono_type() instead of
12574         the hack for generic instances; fixes #76136.
12575
12576 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
12577
12578         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
12579         fields.
12580
12581         * image.c (load_metadata_ptrs): Initialize the new fields.
12582
12583         * reflection.c (create_dynamic_mono_image): Ditto.
12584
12585         * reflection.c (build_compressed_metadata): Use the new fields.
12586
12587         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
12588         icall.
12589
12590         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
12591         icall.
12592         
12593 2005-11-15  Ankit Jain  <jankit@novell.com>
12594             Raja R Harinath  <harinath@gmail.com>
12595
12596         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
12597         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
12598         new per-generic_container cache if the cached MonoType's context matches
12599         the current context.
12600           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
12601         to the expected context.
12602           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
12603
12604 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12605
12606         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
12607         we changed the signature of an icall.
12608         * icall.c: Modify to mono_double_ParseImpl return true/false 
12609         depending on the success, instead of throwing the exception. This will
12610         help us in Double.TryParse methods.
12611         
12612 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
12613
12614         * marshal.c (emit_marshal_object): Throw an exception when
12615         marshalling 'object' instead of crashing. Fixes #76696.
12616
12617 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12618
12619         * class-internals.h: Add prototype for mono_type_get_full_name ().
12620
12621 2005-11-11  Dick Porter  <dick@ximian.com>
12622
12623         * threads.c (mono_thread_manage): Make sure the main thread has
12624         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
12625
12626 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
12627
12628         * loader.c (mono_loader_set_error_type_load): Log a warning to the
12629         console about the missing type.
12630         (mono_loader_set_error_method_load): Ditto.
12631
12632 2005-11-09  Miguel de Icaza  <miguel@novell.com>
12633
12634         * mono-config.c (mono_get_config_dir): Set the system defaults if
12635         none is specified.
12636
12637         * assembly.c (mono_set_dirs): New API entry point to set the
12638         assembly and the config directory in one call
12639
12640 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
12641
12642         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
12643         the ftnptr was created from a delegate in a domain other than the
12644         current domain. Fixes #75377.
12645
12646         * exception.h exception.c: Add mono_get_exception_not_supported ().
12647
12648 2005-11-08  Martin Baulig  <martin@ximian.com>
12649
12650         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
12651
12652 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
12653
12654         * security-manager.h: Added definitions to deal with strongname key 
12655         pairs bigger (and smaller) than 1024 bits.
12656         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
12657         adjust wrt the public key length being used.
12658
12659 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
12660
12661         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
12662           Windows build (r51396-51397).
12663
12664 2005-11-03  Martin Baulig  <martin@ximian.com>
12665
12666         * class.c (mono_class_setup_vtable_general): Also add generic
12667         methods to the vtable; fixes #76581.
12668
12669 2005-11-01  Miguel de Icaza  <miguel@novell.com>
12670
12671         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
12672         sure that we lookup GetString method from the System.Text.Encoding
12673         class, not the derived class or we get an empty method.
12674
12675         Fixed class #76612.
12676
12677 2005-10-25  Miguel de Icaza  <miguel@novell.com>
12678
12679         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
12680         if it has been previously set (embedders). 
12681
12682         Make mono_set_rootdir available also on Unix.
12683
12684 005-10-24  Robert Jordan  <robertj@gmx.net>
12685
12686         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
12687
12688 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
12689
12690         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
12691         only calls which are made to native code use this flag.
12692
12693         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
12694
12695 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
12696
12697         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
12698         Add support for FieldBuilders.
12699
12700 2005-10-29  Martin Baulig  <martin@ximian.com>
12701
12702         * mono-debug.c
12703         (mono_debug_using_mono_debugger): New public method; returns
12704         whether we're running inside the debugger.
12705
12706 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
12709         for Method/Constructor/FieldBuilders.
12710
12711 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * reflection.c (module_add_cattrs): Save custom attributes for global methods
12714         and fields as well.
12715
12716 2005-10-26  Martin Baulig  <martin@ximian.com>
12717
12718         * mono-debug-debugger.c
12719         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
12720
12721 2005-10-24  Raja R Harinath  <harinath@gmail.com>
12722
12723         * icall.c (base64_to_byte_array): Don't pass an out-of-range
12724         integer to isspace.
12725
12726 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
12727
12728         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
12729         when passing valuetypes byref. Fixes #76502.
12730
12731 2005-10-19  Jackson Harper  <jackson@ximian.com>
12732
12733         * profiler.c: Don't put a . in front of types that are not in a
12734         namespace.
12735
12736 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
12739
12740 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
12741
12742         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
12743         #76436.
12744         (mono_marshal_get_ldflda_wrapper): Fix a warning.
12745
12746 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12747
12748         * assembly.c metadata-internals.h icall.c: Define an additional
12749         parameter for mono_assembly_name_parse_full, so we can avoid creating
12750         S.R.AssemblyName.Version when no version info wasn't passed.
12751         
12752 2005-10-09  Miguel de Icaza  <miguel@novell.com>
12753
12754         * class.c (mono_type_get_full_name): Reimplement method that was
12755         removed. 
12756
12757         * image.c: Some docs
12758
12759 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * profiler.c (output_newobj_profile): Fix printing of Total memory
12762         on x86.
12763
12764 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12765
12766         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
12767
12768 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
12769
12770         * threads.c: remove debug output.
12771
12772 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
12773
12774         * threads.c (mono_thread_manage): Fix crashes if more than 64
12775         threads need to be aborted. Hopefully fixes #75899.
12776
12777         * assembly.c (mono_stringify_assembly_name): New helper function.
12778
12779         * class.c: Use mono_stringify_assembly_name instead of the similar
12780         static function.
12781
12782         * assembly.h assembly.c: Add support for calling a postload search 
12783         hook if an assembly cannot be loaded.
12784
12785         * appdomain.c: Register new search hooks which call the AssemblyResolve
12786         events in AppDomain. Fixes #75231
12787
12788 2005-10-07  Martin Baulig  <martin@ximian.com>
12789
12790         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
12791         methods without debug info.
12792
12793 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
12796         wrappers.
12797
12798 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12799
12800         * file-io.c: now that we return symlinks, use lstat and, when the file
12801         is a symbolic link, stat, to get the file attributes. Also avoid the
12802         conversion to/from utf16/external.
12803
12804 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
12805
12806         * class.c (mono_class_layout_fields): Compute klass->has_references
12807         correctly if an embedded valuetype is not yet initialized. Fixes
12808         #76331.
12809
12810 2005-10-04  Martin Baulig  <martin@ximian.com>
12811
12812         * metadata.c
12813         (mono_metadata_load_generic_param_constraints): New public
12814         function; splitted the constraints loading out from
12815         mono_metadata_load_generic_params().
12816
12817         * class.c (mono_class_create_from_typedef): Call
12818         mono_metadata_load_generic_param_constraints() after setting up
12819         the type and creating our parent; fixes #75329.
12820
12821 2005-10-04  Martin Baulig  <martin@ximian.com>
12822
12823         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
12824         non-dynamic parent classes.
12825
12826 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
12827
12828         * file-io.c : win32 build fix (ETXTBSY seems not found).
12829
12830 2005-10-04  Martin Baulig  <martin@ximian.com>
12831
12832         * reflection.c
12833         (mono_image_get_methodspec_token): Make the cache actually work;
12834         fixes #75974.
12835
12836 2005-10-04  Martin Baulig  <martin@ximian.com>
12837
12838         * class.c (mono_class_name_from_token): Removed the unneccessary
12839         `MonoGenericContext *' argument.
12840
12841 2005-10-04  Martin Baulig  <martin@ximian.com>
12842
12843         * loader.c
12844         (method_from_methodspec): Make the caching work again; fixes the
12845         performance regression from #76262.
12846
12847 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12848
12849         * file-io.c:
12850         * file-io.h:
12851         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
12852         GetFileSystemEntries that performs the same work but without going
12853         into io-layer, locking, etc.
12854
12855 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
12856
12857         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
12858         ThreadState_Stopped as well. Fixes #76047.
12859
12860 2005-09-29  Martin Baulig  <martin@ximian.com>
12861
12862         * class.c
12863         (inflate_generic_context): If the new context has a `gmethod', set
12864         its `container' that that gmethod's `container'.
12865
12866         * metadata.c
12867         (mono_metadata_parse_generic_param): Simplify things;
12868         `generic_container = generic_context->container;' is just fine.
12869
12870         * loader.c (method_from_methodspec): Code cleanups.
12871
12872 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
12873
12874         * decimal.c: fix warning (and let gcc generate correct
12875         code on ARM with optimizations).
12876
12877 2005-09-28  Martin Baulig  <martin@ximian.com>
12878
12879         * loader.c
12880         (method_from_memberref): Added `MonoGenericContext *class_context'
12881         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
12882         (method_from_methodspec): If we're a memberref, use the enclosing
12883         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
12884
12885 2005-09-28  Martin Baulig  <martin@ximian.com>
12886
12887         * object.c (mono_runtime_invoke_array): Added support for
12888         MONO_TYPE_GENERICINST; fixes #75917.
12889
12890 2005-09-27  Martin Baulig  <martin@ximian.com>
12891
12892         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
12893         `k->byval_arg.type' to determine the actual type.
12894
12895         * loader.c (method_from_methodspec): Removed some hacks.
12896
12897 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
12898
12899         * class-internals.h (mono_field_is_deleted): Do the test for
12900         rtspecialname before we check the actual name of the field. This
12901         prevents us from dereferencing a pointer into the string table,
12902         saving us from accessing a few pages
12903
12904         * *.c: Replace the use of {Enter,Leave}CriticalSection with
12905         macros. This will allow a deadlock debugger to easily be plugged
12906         in.
12907
12908 2005-09-27  Martin Baulig  <martin@ximian.com>
12909
12910         * loader.c (method_from_methodspec): Create a "signature"
12911         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
12912
12913 2005-09-27  Martin Baulig  <martin@ximian.com>
12914
12915         * class.c
12916         (inflate_generic_class): Correctly set the new context's
12917         container.
12918
12919         * loader.c
12920         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
12921         instead of a `MonoGenericContext *'.
12922         (mono_method_signature_full): Take a `MonoGenericContainer *'
12923         instead of a `MonoGenericContext *'.
12924
12925         * metadata.c
12926         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
12927         instead of a `MonoGenericContext *'.
12928         (mono_metadata_parse_method_signature_full): Likewise.
12929
12930 2005-09-26  Martin Baulig  <martin@ximian.com>
12931
12932         * class.c
12933         (mono_class_from_generic_parameter): Set `klass->generic_container'
12934         (mono_class_from_generic_parameter): Likewise.
12935         (mono_bounded_array_class_get): We inherit the generic container
12936         from the element class.
12937
12938         * loader.c
12939         (find_method, find_method_in_class): Take a `MonoGenericContext *'
12940         argument rather than computing it here.
12941         (method_from_memberref): Correctly set the generic context before
12942         parsing the signature.  Fixes #75681.
12943
12944 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
12945
12946         * object.c (mono_class_has_special_static_fields): Fix warnings.
12947
12948 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12949
12950         * assembly.c: Add parse_public_key function, to
12951         par the public keys. Also added mono_assembly_name_parse_full,
12952         to define it the parsed key should be freed or not.
12953         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
12954         to parse a long format assembly name.
12955         * metadata-internals.h: Keep mono_assembly_name_parse_full as
12956         private, since calling it to preserve the key requires
12957         freeing it manually.
12958         
12959 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
12960
12961         * locales.c : removed HAVE_ICU part.
12962
12963 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
12964
12965         * object.c (mono_class_create_runtime_vtable): Avoid calling 
12966         field_is_special_static if the klass has no special static fields.
12967
12968         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
12969         (MonoCachedClassInfo): Likewise.
12970
12971         * object.c (mono_class_has_special_static_fields): New helper function.
12972
12973 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * class.c (mono_class_create_from_typedef): Don't call 
12976         interfaces_from_typedef_full for enums.
12977         (mono_class_create_from_typedef): Compute the base types of enums directly
12978         without calling mono_class_setup_fields ().
12979         (mono_class_find_enum_basetype): New helper function.
12980
12981         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
12982         one place inside the string heap.
12983         
12984 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
12985
12986         * class.c: locking fixes, code cleanups, some docs added.
12987         Allocate some data structures in the image mempool.
12988
12989 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
12990
12991         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
12992         the example code.
12993         
12994 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
12995
12996         * class-internals.h, class.c, reflection.c: reduce memory taken by
12997         MonoClass.
12998
12999 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
13000
13001         * metadata.c, metadata.h, loader.h: documentation updates, code and
13002         API cleanups.
13003
13004 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13005
13006         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
13007         the example code.
13008
13009         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
13010         page faults caused by the runtime while reading metadata.
13011
13012 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13013
13014         * socket-io.c: the field names were changed 3 months ago and no one
13015         realized until bug #76077 got filed!
13016
13017 2005-09-20  Martin Baulig  <martin@ximian.com>
13018
13019         * icall.c (assembly_icalls): Removed some unused debugger icalls.
13020
13021 2005-09-20  Martin Baulig  <martin@ximian.com>
13022
13023         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
13024         write the rank into the class entry.
13025
13026 2005-09-20  Martin Baulig  <martin@ximian.com>
13027
13028         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
13029
13030 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
13031
13032         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13033
13034         * icall.c (custom_attrs_defined_internal): New icall.
13035
13036         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
13037         function.
13038         (mono_custom_attrs_construct_by_type): New helper function.
13039
13040 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
13041
13042         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
13043         terminate the resulting string. Fixes #76123.
13044
13045 2005-09-16  Martin Baulig  <martin@ximian.com>
13046
13047         * mono-debug.c
13048         (mono_debug_add_method): Ignore inflated methods for the moment.
13049
13050 2005-09-14  Martin Baulig  <martin@ximian.com>
13051
13052         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
13053
13054 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
13055
13056         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
13057         return a success/failure indication.
13058         (mono_metadata_interfaces_from_typedef_full): Ditto.
13059         (get_constraints): Ditto.
13060
13061 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * marshal.c (emit_marshal_array): Fix handling of null arrays.
13064         
13065         * marshal.c (emit_marshal_array): Add support for returning string
13066         arrays from delegates. Fixes #76063.
13067
13068         * marshal.c: Use the emit_ldloc/stloc macros where possible.
13069
13070 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
13073         icall.
13074
13075 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13076
13077         * reflection.c icall.c: Fix after mono_get_exception_type_load
13078         signature change.
13079
13080         * assembly.c (mono_assembly_get_assemblyref): New helper function.
13081         (mono_assembly_load_reference): Use the new helper.
13082
13083         * class-internals.h (MonoLoaderError): New structure containing 
13084         information about type loading errors.
13085
13086         * class-internals.h loader.c: Add APIs to store per-thread loader
13087         error information.
13088
13089         * loader.c class.c: Set the loader error if needed.
13090
13091         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
13092
13093 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
13094
13095         * decimal.c: fixed to handle the broken ARM fp format.
13096
13097 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
13098
13099         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
13100         broken.
13101
13102 2005-09-06  Martin Baulig  <martin@ximian.com>
13103
13104         * domain.c (supported_runtimes): Added v2.0.50727.
13105
13106 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
13107
13108         * culture-info.h: reduce the size of some structures.
13109
13110 2005-09-05  Martin Baulig  <martin@ximian.com>
13111
13112         Reflect latest API changes in the August CTP.
13113
13114         * icall.c
13115         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
13116         ("MonoType.HasGenericArguments"): Removed.
13117         ("MonoMethod.BindGenericParameters"): Renamed to
13118         "MakeGenericMethod".
13119         ("MethodBuilder.BindGenericParameters"): Renamed to
13120         "MakeGenericMethod".    
13121
13122 2005-09-05  Martin Baulig  <martin@ximian.com>
13123
13124         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
13125
13126 2005-09-05  Martin Baulig  <martin@ximian.com>
13127
13128         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13129
13130         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
13131         generic_container is non-NULL.
13132
13133 2005-09-05  Martin Baulig  <martin@ximian.com>
13134
13135         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13136
13137         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
13138
13139 2005-08-29  Michal Moskal  <malekith@nemerle.org>
13140
13141         * reflection.c (encode_locals,
13142         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
13143         for large generic types.
13144
13145 2005-09-05  Martin Baulig  <martin@ximian.com>
13146
13147         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13148
13149         * class.c (mono_dup_array_type): New public method.
13150         (mono_metadata_signature_deep_dup): New public method.
13151         (dup_type): Correctly duplicate array and function types.
13152
13153 2005-09-05  Martin Baulig  <martin@ximian.com>
13154
13155         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13156
13157         * reflection.c (get_default_param_value_blobs): Handle generic types
13158         and generic methods.
13159
13160 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
13161
13162         * class.c: Fixed error reporting (method/class were inversed) for 
13163         inheritance demands.
13164         * security-manager.c|h: Added the AppDomain when calling the managed
13165         System.Security.SecurityManager.InheritanceDemand method.
13166
13167 2005-09-01  Raja R Harinath  <rharinath@novell.com>
13168
13169         * reflection.c (encode_marshal_blob): 'marshaltype' and
13170         'marshaltyperef' are alternate sources for the custom marshaler
13171         name.
13172
13173 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
13174
13175         * class.c: fix creation of array classes with rank == 1
13176         (patch by Ankit Jain <jankit@novell.com>).
13177
13178 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
13179
13180         * object.c: fix check for creating the bound data for arrays vs
13181         szarrays.
13182
13183 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13184
13185         * object.c: configuration file name is now based on the executable name,
13186         not the image name. Fixes bug #75931.
13187
13188 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
13189
13190         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
13191         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
13192
13193 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
13194
13195         * rand.c: Use wincrypt.h instead of WinCrypt.h.
13196
13197 2005-08-24  Ankit Jain  <jankit@novell.com>
13198             Raja R Harinath  <rharinath@novell.com>
13199
13200         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
13201           called by it recursively.
13202           (mono_class_init): Remove special case in pending_init handling, since it's
13203           superseded by the fix to mono_class_from_typeref.
13204
13205 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
13206
13207         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
13208         BROKEN_THREAD_START stuff.
13209
13210 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
13211
13212         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
13213         trampoline.
13214
13215         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
13216         
13217         * object.c (mono_delegate_ctor): Replace the original function address with
13218         a delegate trampoline.
13219
13220 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
13221
13222         * icall.c: add boolean argument to base64_to_byte_array and 
13223         InternalFromBase64String to control whether a whitespace-only string
13224         is allowed (or should casue a FormatException to be thrown). We need
13225         this as the behavior has changed between MS.NET 1.x and 2.0, and we
13226         to match the MS behaviour in both profiles.
13227         * appdomain.c: Bump corlib version.
13228
13229 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13230
13231         This patch implements a big portion of publisher policy
13232         support, used to bind assembly versions and redirect
13233         one assembly from version A to version B.
13234
13235         * assembly.c:
13236         New GSList loaded_assembly_bindings, for storing the cached
13237         assembly bindings.
13238         (assembly_binding_maps_name): New static function for checking if a 
13239         assembly binding information maps an assembly name.
13240         (mono_assembly_binding_info_free): New function for freeing
13241         assembly binding information resources.
13242         (get_publisher_policy_info): New static function for retrieving 
13243         assembly binding information from a MonoImage.
13244         (compare_versions): New static function for comparing an assembly
13245         binding information data and the version of an assembly name.
13246         (check_policy_versions): New static function for checking if an
13247         assembly binding info mapping an assembly name is valid for it.
13248         (mono_assembly_load_publisher_policy): New static function for
13249         loading the 'policy.major.minor.MyAssembly' image for an assembly
13250         with an assembly name 'aname'.
13251         (mono_assembly_bind_version): New static function for updating
13252         assembly redirection.
13253         (mono_assembly_apply_binding): New static function for applying
13254         assembly binding.
13255         (search_binding_loaded): New static function for searching 
13256         loaded assembly binding infos in the cache domain.
13257         (mono_assembly_load_full): Don't apply assembly binding for
13258         reflection only assemblies.
13259
13260         * metadata-internals.h: Add MonoAssemblyBindingInfo,
13261         which contains information about assembly binding. Also
13262         declare signature for mono_config_parse_publisher_policy ()
13263         function, used to retrieve pub policy info.
13264         
13265         * mono-config.c:
13266         (publisher_policy_start): New static function used to parse publisher 
13267         policy config files.
13268         (publisher_policy_parser): New static MonoParseHandler containing 
13269         the functions used when parsing config files.
13270         (mono_config_parse_publisher_policy): New function for parsing
13271         publisher policy files.
13272         
13273 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
13274
13275         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
13276
13277         * marshal.c (mono_delegate_free_ftnptr): Ditto.
13278
13279         * object.c (mono_get_addr_from_ftnptr): New helper function.
13280
13281         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
13282
13283         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13284
13285 2005-08-19  Dick Porter  <dick@ximian.com>
13286
13287         * threads.c, threads.h, appdomain.c, appdomain.h,
13288         profiler-private.h, monitor.c, object.c, object-internals.h,
13289         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
13290         store the thread ID, so it can hold a 64 bit value if needed.
13291
13292 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
13293
13294         * reflection.c (mono_reflection_create_dynamic_method): Store the
13295         handle class into the method references as well so ldtoken works in
13296         dynamic methods.
13297
13298         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
13299         types.
13300
13301 2005-08-19  Ankit Jain <jankit@novell.com>
13302
13303         Fix #75847.
13304         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
13305           here rather than using the method signature of a arbitrary function
13306           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
13307           two arguments.
13308           Hack done with Harinath.
13309
13310 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13311
13312         * threadpool.c: disable printing stack traces when we get a exception
13313         in a threadpool thread. I need to do more testing to figure out which
13314         cases actually print this. Fixes bug #75828.
13315
13316 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13317
13318         * icall.c: there might be ignored whitespace after the last '='. This
13319         fixes length computation and bug #75840.
13320
13321 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
13322
13323         * assembly.c (mono_assembly_load_full): Consider .exe extension as
13324         well. Fixes #75809.
13325
13326         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
13327         #75784.
13328         
13329         * reflection.c (create_custom_attr_data): Ditto.
13330
13331 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
13332
13333         * locales.c, culture-info.h : removed RegionLCIDMap.
13334         * culture-info-tables.h : regenerated.
13335
13336 2005-08-16  Martin Baulig  <martin@ximian.com>
13337
13338         * class.c (mono_type_get_name_recurse): Small fix.
13339
13340 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
13341
13342         * locales.c : indentation fixie.
13343
13344 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
13345
13346         * object-internals.h,
13347           locales.h,
13348           locales.c,
13349           culture-info.h,
13350           icall.c : added RegionInfo table support.
13351         * culture-info-table.h : regenerated for region support.
13352
13353 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
13354
13355         * reflection.c (resolve_object): handle all kinds of MonoMethod
13356         including generic ones
13357
13358 2005-08-12  Ankit Jain <jankit@novell.com>
13359
13360         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
13361           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
13362
13363 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
13364
13365         * process.c: Don't close a thread handle when it's NULL. This is a
13366         workaround for bug #75733.
13367
13368 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
13369
13370         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
13371
13372 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
13373
13374         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
13375
13376 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13377
13378         * threadpool.c: if a work item in the thread pool has a callback that
13379         catches a exception, don't propagate it after invoking the callback.
13380         Fixes bug #75336.
13381
13382 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
13383
13384         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
13385
13386         * class-internals.h (MonoCachedClassInfo): Add some new fields.
13387
13388         * class.c (mono_class_init): Load field info lazily in the AOT case.    
13389
13390         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
13391
13392 2005-08-03  Ankit Jain  <jankit@novell.com>
13393
13394         Fix #75683.
13395         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
13396           PInvoke calling convention is 0.
13397
13398 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
13399
13400         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
13401         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
13402
13403 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
13404
13405         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
13406         to handle threads not started by the GC (patch by Michael Meeks
13407         <michael.meeks@novell.com>).
13408
13409 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
13410
13411         * reflection.c: Make buffer used in emitting types larger for some
13412         big generic types (patch by Michal Moskal).
13413
13414 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
13415
13416         * mono-debug.c: Fix some (not all) alignment problems.
13417
13418 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13419
13420         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
13421         Invoke mono_image_load_from_data_full passing the refonly
13422         parameter.
13423
13424         * assembly.c
13425         (mono_assembly_open_from_bundle): Add the refonly argument, 
13426         in order to pass it to other methods it calls to.
13427         (do_mono_assembly_open): Add the refonly argument, in order 
13428         to pass it to other methods it calls to.
13429         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
13430         the refonly parameter to it.
13431
13432         * image.c: Add loaded_images_refonly_hash and
13433         loaded_images_refonly_guid_hash to cache the reflection
13434         only loaded images.
13435         (mono_images_init): Initialize the hash tables used for
13436         caching the reflection only images.
13437         (load_modules): Invoke mono_image_open_full passing the refonly
13438         parameter to load the modules the correct way.
13439         (build_guid_table): Add the refonly argument, to re-build the 
13440         correct hash table.
13441         (do_mono_image_open): Added the refonly argument, in order to
13442         define it for the loaded image.
13443         (mono_image_loaded_full): New function, which receives an
13444         additional parameter to look for the image in the refonly or
13445         non-refonly section.
13446         (mono_image_loaded): Updated, using mono_image_loaded_full.
13447         (mono_image_loaded_by_guid_full): The same case that happens
13448         with mono_image_loaded_full.
13449         (mono_image_loaded_by_guid): Likewise.
13450         (register_image): Use the ref_only variable inside MonoImage
13451         to decide in which hash table store the current image.
13452         (mono_image_open_from_data_full): Rename
13453         mono_image_open_from_data to mono_image_open_from_data_full,
13454         adding the refonly argument, to define the ref_only variable 
13455         inside MonoImage.
13456         (mono_image_open_from_data): Return 
13457         mono_image_open_from_data_full.
13458         (mono_image_open_full): Rename mono_image_open to
13459         mono_image_open_full, receiving the new refonly argument,
13460         to pass it to inner methods.
13461         (mono_pe_file_open): Update this function, to open
13462         a MonoImage as a non-refonly image.
13463         (mono_image_close): Use the refonly variable inside
13464         MonoImage to remove the image from the correct caches.
13465
13466         * image.h: Add the signatures of mono_image_open_full,
13467         mono_image_open_from_data_full, mono_image_loaded_full,
13468         mono_image_loaded_by_guid_full.
13469
13470         * metadata-internals.h: Add the ref_only field to 
13471         MonoImage.
13472         
13473 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13474
13475         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
13476         Fix the last behavior, which used to load the assemblies and
13477         extract MonoReflectionAssemblyName information, instead of
13478         extract it from the metadata tables. Needed for Reflection
13479         Only assemblies.
13480         
13481 2005-07-29  Martin Baulig  <martin@ximian.com>
13482
13483         * mono-debug-debugger.c
13484         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
13485         not initialized.
13486
13487         * mono-debug.c
13488         (mono_debug_address_from_il_offset): Check whether we have
13489         debugging support before attempting to take the lock.
13490         (mono_debug_source_location_from_address): Likewise.
13491         (mono_debug_source_location_from_il_offset): Likewise.
13492         (mono_debug_il_offset_from_address): Likewise.
13493         (mono_debug_address_from_il_offset): Likewise.
13494
13495 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
13496
13497         * class.c (mono_class_from_name_case): Add support for dynamic images.
13498         Fixes #75650.
13499
13500         * object.c (mono_class_compute_gc_descriptor): Add a workaround
13501         for #75479.
13502
13503 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13504         
13505         * reflection.c (mono_method_get_object): Fix warning.
13506
13507 2005-07-28  Martin Baulig  <martin@ximian.com>
13508
13509         * mono-debug.c
13510         (mono_debug_add_wrapper): Also write the wrapper type.
13511
13512 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
13513
13514         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
13515         
13516         * class.c (mono_class_init): Avoid reading nested classes if the AOT
13517         data indicates the class has none.
13518
13519 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
13520
13521         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
13522         loader lock with the debugger lock. Prevents deadlocks for beagle.
13523
13524         Beagle can now run on an smp box for a weekend without any
13525         issues. Woohoo!
13526
13527 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
13528
13529         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
13530         in a module. Fixes #75629.
13531
13532 2005-07-26  Martin Baulig  <martin@ximian.com>
13533
13534         * mono-debug.c (mono_debug_add_wrapper): New static method.
13535         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
13536         interncall or a wrapper.
13537
13538         * mono-debug.h (MonoDebugWrapperData): New public typedef.
13539         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
13540         (MONO_DEBUGGER_VERSION): Bump to 51.
13541
13542         * mono-debug-debugger.c
13543         (mono_debugger_add_type): Removed this empty function.
13544         (mono_debugger_add_method): Likewise.
13545
13546 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
13547
13548         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
13549         before accessing method->slot.
13550
13551 2005-07-21  Jb Evain  <jbevain@gmail.com>
13552
13553         * reflection.c (method_encode_clauses/class): Handle filters clauses.
13554         Fixes #75010.
13555
13556 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
13557
13558         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
13559         #75587.
13560
13561 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
13562
13563         * image.h image.c: Add mono_image_get_guid () API function.
13564
13565 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
13566
13567         There were issues when multiple threads tried to load
13568         assemblies. A deadlock was created between assemblies_mutex and
13569         mono_domain_assemblies_lock. This fixes the issue by making the
13570         assembly ref counting be lock free. See bug 75586.
13571         
13572         * image.c (mono_image_close): The add ref function here was using
13573         Interlocked operations while the unref was using a mutex and a
13574         --. I don't think this was ever a bug that would be exposed in a
13575         non-pendantic way (ie, by an embedder doing a ref on one thread
13576         and an unref on another), but for the sake of correctness, this is
13577         now Interlocked.
13578
13579         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
13580         (mono_assembly_load_reference): Call mono_assembly_addref rather
13581         than touching the refcount ourselves.
13582         (mono_assembly_close): Use InterlockedDecrement to unref the
13583         assembly. Don't acquire the lock unless it is actually needed.
13584
13585 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
13586
13587         * class.c (mono_class_layout_fields): Fix calculation of has_references
13588         for generic types.
13589
13590 2005-07-12  Martin Baulig  <martin@ximian.com>
13591
13592         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13593
13594         * metadata.c
13595         (mono_type_hash): Provide better hashing for generic instances.
13596         (mono_generic_inst_hash): Improve hashing.
13597         (mono_generic_class_hash): Likewise.
13598
13599         * reflection.c (mymono_metadata_type_hash): Improve hashing for
13600         generic instances.
13601
13602 2005-07-12  Martin Baulig  <martin@ximian.com>
13603
13604         * reflection.c (mono_reflection_create_runtime_class): Remove the
13605         hack for generic type definitions and non-`Run' assemblies.
13606         (mono_reflection_bind_generic_parameters): Also use
13607         `klass->wastypebuilder' to check for TypeBuilders.
13608
13609 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
13610
13611         * class.c (mono_class_layout_fields): Fix calculation of has_references
13612         for generic types.
13613
13614         * class.c (inflate_generic_class): Fix a leak.
13615         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
13616         for generic types.
13617
13618 2005-07-11  Martin Baulig  <martin@ximian.com>
13619
13620         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
13621         on error.
13622
13623 2005-07-11  Martin Baulig  <martin@ximian.com>
13624
13625         * loader.c (find_method): Also lookup in
13626         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
13627
13628 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13629
13630         * appdomain.c (mono_domain_unload): Don't free the error message
13631         before passing it to mono_get_exception_...
13632
13633         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
13634         
13635 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
13636
13637         * threads.c: try to better guess an available RT signal (bug #75387).
13638
13639 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13640
13641         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
13642         and CACHE_OBJECT.
13643
13644 2005-07-07  Martin Baulig  <martin@ximian.com>
13645
13646         * class.c (mono_type_get_name_full): Return NULL for
13647         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
13648         fixes #75408.
13649
13650 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
13651
13652         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
13653         exit the appdomain as well being aborted.
13654
13655         * threadpool.c: Create all threadpool threads inside the root appdomain, and
13656         change back to the root domain after calling managed code. This enables
13657         appdomains using threadpools to be unloaded.
13658
13659 2005-07-07  Martin Baulig  <martin@ximian.com>
13660
13661         * class-internals.h
13662         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
13663         into `MonoDynamicGenericClass' since we only need it for dynamic
13664         types.
13665
13666         * reflection.c (mono_class_bind_generic_parameters): We don't need
13667         to compute the `parent' here.
13668
13669 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
13670
13671         * culture-info-table.h : regenerated.
13672
13673 2005-07-06  Martin Baulig  <martin@ximian.com>
13674
13675         * icall.c
13676         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
13677
13678         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
13679
13680 2005-07-06  Martin Baulig  <martin@ximian.com>
13681
13682         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
13683         we're doing a signature-only comparision; fixes #74945.
13684
13685 2005-07-06  Martin Baulig  <martin@ximian.com>
13686
13687         * class-internals.h (MonoGenericClass): Moved some things out into
13688         a new `MonoInflatedGenericClass' type.  
13689         (MonoInflatedGenericClass): New type; the `klass' of a
13690         `MonoGenericClass' is now computed lazyly in
13691         mono_get_inflated_generic_class().      
13692
13693         * class.c (mono_get_inflated_generic_class): New public function.
13694         (mono_class_inflate_generic_method): Removed the unused
13695         `MonoClass *' argument.
13696         (setup_generic_vtable): Don't call mono_get_inflated_method() on
13697         all the methods.
13698         (mono_class_create_generic): Make this static and merge it with
13699         mono_class_create_generic_2(); we're now called automatically from
13700         mono_get_inflated_generic_class().
13701
13702         * loader.c (mono_method_signature): Call
13703         mono_get_inflated_method() here.
13704
13705 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
13706
13707         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
13708         type of fields with RVA.
13709
13710         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
13711         for this pseudo class.
13712         (my_mono_class_from_generic_parameter): Likewise.
13713         (mono_class_init): Allow interfaces to have cctors.
13714
13715 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13716
13717         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
13718         lazily for AOT methods.
13719
13720 2005-07-05  Martin Baulig  <martin@ximian.com>
13721
13722         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
13723         returns FALSE for a successful match, not TRUE.
13724
13725 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
13726
13727         * loader.c (mono_method_get_index): Optimize this a bit.
13728
13729 2005-07-04  Martin Baulig  <martin@ximian.com>
13730
13731         * class.c
13732         (class_compute_field_layout): Move the check for generic type
13733         definitions into mono_class_layout_fields().  Fixes #74684.
13734         (mono_class_from_generic_parameter): Correctly compute
13735         `klass->parent'; fixes #75457.
13736
13737         * reflection.c (register_assembly, register_module): Make sure
13738         `domain->rejobject_hash' is already created.
13739
13740 2005-07-02  Martin Baulig  <martin@ximian.com>
13741
13742         * class-internals.h
13743         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
13744         `MonoDynamicGenericClass'.      
13745
13746 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
13747
13748         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
13749         returned by a field getter is null, since null is a valid value.
13750
13751 2005-07-01  Martin Baulig  <martin@ximian.com>
13752
13753         * reflection.c (mono_reflection_generic_class_initialize): Update
13754         the `dgclass->fields [i].parent' to the correct class.
13755         (mono_image_get_fieldref_token): Use the declaring type, not the
13756         reflected type.
13757
13758 2005-07-01  Martin Baulig  <martin@ximian.com>
13759
13760         * loader.c (find_method): Also look in the interfaces; fixes #75429.
13761
13762 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
13763
13764         * threads.c (thread_cleanup): assert that thread != NULL
13765         (wait_for_tids_or_state_change): We were using the wrong variable
13766         when accessing wait->threads. `i' was always out of the bounds of
13767         the array.
13768
13769 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13770
13771         * loader.c: map user32 and kernel32 to libMonoSupportW
13772
13773 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
13774
13775         * appdomain.c (unload_thread_main): Mark this as WINAPI.
13776
13777 2005-06-28  Martin Baulig  <martin@ximian.com>
13778
13779         * loader.c (method_from_methodspec): Fix #75334.
13780
13781 2005-06-28  Martin Baulig  <martin@ximian.com>
13782
13783         Fix #74953 - Arrays now implement the generic IList<T> interface
13784         on the 2.0 platform.
13785
13786         * class-internals.h (MonoDefaults): Added `generic_array_class'.
13787
13788         * reflection.c (mono_class_bind_generic_parameters): New public
13789         function; similar to mono_reflection_bind_generic_parameters(),
13790         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
13791
13792         * domain.c (mono_init_internal): Try to initialize.
13793         `mono_defaults.generic_array_class' here; this'll only succeed if
13794         we're using the 2.0 corlib.
13795
13796         * icall.c
13797         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
13798         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
13799         (mono_lookup_internal_call): Added support for nested classes.
13800
13801         * loader.c
13802         (mono_get_method_from_token): Set `result->signature->pinvoke' if
13803         we're an interncall and have generic arguments.
13804
13805         * class.c
13806         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
13807         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
13808         instance of System.Array.InternalArray<T> for arrays, so they
13809         implement the generic IList<T> interface.
13810
13811 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
13812
13813         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
13814         (chastamar@yahoo.com). Fixes #75374.    
13815
13816 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
13817
13818         * culture-info-table.h: regenerated.
13819
13820 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13821
13822         * icall.c: handle spaces correctly for base64 strings.
13823
13824 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
13825
13826         * *.c: Kill some warnings.
13827
13828 2005-06-23  Duncan Mak  <duncan@novell.com>
13829
13830         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
13831         that this builds on Solaris 10 (x86).
13832
13833 2005-06-23  Martin Baulig  <martin@ximian.com>
13834
13835         * class.c
13836         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
13837         generic type definitions.
13838
13839 2005-06-23  Martin Baulig  <martin@ximian.com>
13840
13841         Fix #75331.
13842
13843         * metadata.c (mono_class_get_overrides): Renamed to
13844         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
13845         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
13846         pass it to mono_get_method_full().
13847
13848 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
13849
13850         * reflection.c (mono_reflection_create_runtime_class): take the
13851         mono_domain_lock in this method. Prevents deadlocks
13852
13853 2005-06-22  Martin Baulig  <martin@ximian.com>
13854
13855         * loader.c (method_from_methodspec): Fix #75330.
13856
13857 2005-06-22  Martin Baulig  <martin@ximian.com>
13858
13859         * reflection.c (type_get_qualified_name): Use
13860         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
13861         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
13862         argument; use it if we don't have an assembly name.
13863
13864 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
13865
13866         * object.c: In mono_message_init, set "copy out" flag for in
13867         parameters with the [Out] flag.
13868
13869 2005-06-21  Martin Baulig  <martin@ximian.com>
13870
13871         * class.c
13872         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
13873         and MONO_TYPE_PTR.
13874
13875 2005-06-21  Martin Baulig  <martin@ximian.com>
13876
13877         * class.c (mono_class_init): Don't initialize `class->fields' for
13878         generic instances since they're initialized again in
13879         compute_field_layout(). 
13880         (compute_field_layout): Set the field's `generic_info' here; fix
13881         #75320. 
13882
13883 2005-06-21  Martin Baulig  <martin@ximian.com>
13884
13885         * class-internals.h
13886         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
13887
13888         * metadata.c (mono_metadata_generic_method_equal): Also
13889         distinguish the `generic_class'; fixes #75334.
13890
13891 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13892
13893         * domain.c:
13894         * appdomain.c:
13895         * domain-internals.h:
13896         * reflection.c: 'domain_assemblies' field is now protected by its own
13897         lock. Don't call into managed code to run the AssemblyLoad event if we
13898         now there are no registered delegates for it.
13899
13900 2005-06-20  Martin Baulig  <martin@ximian.com>
13901
13902         * class.c (mono_class_is_assignable_from): Use a custom version of
13903         mono_class_has_parent() to make things work for generic instances;
13904         fix #75300.
13905
13906 2005-06-20  Martin Baulig  <martin@ximian.com>
13907
13908         * loader.c (method_from_methodspec): Apply a patch from
13909         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
13910
13911 2005-06-20  Martin Baulig  <martin@ximian.com>
13912
13913         * class.c (mono_class_init): Reverted Zoltan's last change; it
13914         breaks generics.
13915
13916 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
13917
13918         * threads.c (wait_for_tids_or_state_change): Add missing locking.
13919
13920 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13921
13922         * socket-io.c: fix the index in the socket array for writable/error
13923         sockets. Fixes bug #75306.
13924
13925 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
13926
13927         * class.c (mono_class_init): Allow interfaces to have static ctors.
13928
13929 2005-06-17  Martin Baulig  <martin@ximian.com>
13930
13931         * loader.c (method_from_methodspec): Use `context->container' when
13932         parsing the `gmethod->inst'.
13933
13934 2005-06-17  Martin Baulig  <martin@ximian.com>
13935
13936         * class.c (mono_type_get_name_recurse): Don't add the assembly
13937         name for type arguments.
13938
13939 2005-06-15  Martin Baulig  <martin@ximian.com>
13940
13941         * reflection.c (mono_image_get_inflated_method_token): Encode
13942         correct klass; fixes #75260.
13943
13944 2005-06-13 Michal Moskal <malekith@nemerle.org>
13945
13946         * icall.c: Make GetCorrespondingMethod/Constructor take
13947         MonoReflectionMethod method not MonoMethod. Removed
13948         MonoType.GetCorrespondingField, and make
13949         MonoGenericType.GetCorrespondingField take name not
13950         MonoClassField.
13951
13952 2005-06-13  Michal Moskal <malekith@nemerle.org>
13953
13954         * reflection.c (field_encode_signature, encode_locals):
13955          Make sizes of buffers for types larger (for big generic types).
13956          (create_generic_typespec,
13957          mono_reflection_sighelper_get_signature_local,
13958          mono_reflection_sighelper_get_signature_field):
13959          Add asserts for too small buffers.
13960
13961 2005-06-15  Martin Baulig  <martin@ximian.com>
13962
13963         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
13964         if our parent is not a dynamic type.
13965
13966 2005-06-15  Martin Baulig  <martin@ximian.com>
13967
13968         * class-internals.h (MonoTypeNameFormat): New enum.
13969
13970         * class.c
13971         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
13972         (mono_type_get_full_name): Removed.
13973         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
13974         argument instead of the boolean's.
13975
13976         * icall.c (ves_icall_System_MonoType_getFullName):
13977         Added `gboolean assembly_qualified'.    
13978
13979         * reflection.h
13980         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
13981
13982         * reflection.c (mono_reflection_parse_type): Parse the new type
13983         name format.
13984
13985 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13986
13987         * icall.c: no need to convert from utf16 to utf8 and then back again
13988         after the call to GetLogicalDrives.
13989
13990 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13991
13992         * icall.c: frombase64. Fix problems exposed by new tests.
13993
13994 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13995
13996         * icall.c: added internal calls for converting char [] and strings in
13997         base64 into byte [].
13998
13999 2005-06-10  Martin Baulig  <martin@ximian.com>
14000
14001         * class.c (mono_class_create_generic_2): Read the nested classes
14002         from the metadata rather than from `gklass->nested_classes' since
14003         `gklass' might not be initialized yet.
14004
14005 2005-06-09  Duncan Mak  <duncan@novell.com>
14006
14007         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
14008         all public headers. Fixes #74919.
14009
14010 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
14011
14012         * domain.c: The key for proxy_vtable_hash is now a pointer
14013         array. Added new GHashFunc and GCompareFunc functions for this.
14014
14015         * class.h: The list of interfaces in MonoRemoteClass is known in
14016         advance and can't grow (we create a new MonoRemoteClass if needed),
14017         so now the interface array can be allocated together with
14018         MonoRemoteClass.
14019         
14020         * object.c: Added a new method create_remote_class_key.
14021         Fixed mono_remote_class so it does not depend on
14022         mono_upgrade_remote_class.
14023         Removed extend_interface_array.
14024         Added new method clone_remote_class(), which makes a copy of a remote
14025         class and adds a new interface or class to it.
14026         mono_upgrade_remote_class() now creates a new remote class (or gets
14027         it from the cache) if an vtable upgrade is needed. In this way
14028         we make sure that other objects sharing the same remote class
14029         don't get the new vtable with unwanted interfaces.
14030         
14031         * object-internals.h:
14032         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
14033         
14034         * marshal.c: Track changes in mono_upgrade_remote_class().
14035
14036 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
14037         * icall.c: Add runtime methods for obtaining members of inflated
14038         class, which were created from supplied non-inflated members. It
14039         is used in internal Get{Method,Constructor,Field} methods in
14040         System.Type
14041
14042 2005-06-09  Martin Baulig  <martin@ximian.com>
14043
14044         * reflection.c
14045         (mono_reflection_bind_generic_method_parameters): Fix #75169.
14046
14047 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14048         * reflection.c (mono_image_basic_init): Define
14049         Version in MonoDynamicAssembly. 
14050         
14051 2005-06-08  Martin Baulig  <martin@ximian.com>
14052
14053         Fix #75136.
14054
14055         * loader.c
14056         (mono_method_signature_full): New public method; takes a
14057         `MonoGenericContext *'.
14058         (find_method): Use mono_method_signature_full() and pass the
14059         klass'es context to it.
14060
14061         * class.c (mono_class_is_inflated_method): Use
14062         mono_method_signature_full() and pass the context to it.
14063
14064 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
14065
14066         * object.c: add proper locking in mono_remote_class_vtable(),
14067         fixes possible memory corruption.
14068
14069 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
14070
14071         * marshal.c (mono_remoting_marshal_init): set
14072         initialized after initialization.
14073
14074 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
14075
14076         * locales.c : hush.
14077
14078 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
14079
14080         * object.c (extend_interface_array): fix really silly
14081         memory corrupting / comparison bug.
14082
14083 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14084
14085         * reflection.c: Functions added to support the creation
14086         of CustomAttributeData, which includes Attribute data
14087         used by ReflectionOnly methods.
14088
14089         * reflection.h:  mono_reflection_get_custom_attrs_data and
14090          mono_custom_attrs_data_construct added (functions exposed).
14091
14092          * icall.c: Added mono_reflection_get_custom_attrs_data
14093          as icall.
14094         
14095 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14096
14097         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
14098         lupus's request.
14099
14100 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
14101
14102         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
14103
14104         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
14105         dynamic DllImportAttribute.
14106
14107         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
14108         dynamic DllImportAttribute.
14109
14110         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
14111         Fixes #75162.
14112
14113 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14114
14115         * threads.c: avoid segfault when an unstarted thread is aborted.
14116
14117 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
14118
14119         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
14120         Returns the name and version of the runtime for reporting.
14121
14122 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14123
14124         * appdomain.c: bump corlib version.
14125         * object-internals.h: new field in MonoReflectionAssembly.
14126
14127 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14128
14129         * object-internals.h: Carlos forgot to add this field.
14130
14131 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14132
14133         * icall.c: Added create_version to create instances
14134         of Version of MonoReflectionAssemblyName. This change helps
14135         the AssemblyName tests to keep running fine.
14136         
14137 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
14138   
14139         * object.c (mono_method_return_message_restore): A somehow less
14140         intrusive fix for #75138.
14141
14142 2005-06-03  Raja R Harinath  <rharinath@novell.com>
14143
14144         * object.c (mono_method_return_message_restore): Fix computation
14145         of expected number of out args.
14146
14147 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
14148
14149         * reflection.c (mono_image_get_method_info): Fix the case when the
14150         charset is empty.
14151
14152 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
14153
14154         * object.c: Added missing null check in
14155           mono_method_return_message_restore.
14156
14157 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
14158
14159         * reflection.c (mono_image_get_method_info): Handle the case when
14160         dllentry is empty.
14161
14162 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
14163
14164         * object.c: When creating the vtable for a proxy, take into account
14165         all inherited interfaces, not only the ones registered in
14166         iclass->interfaces. This fixs bug #74996.
14167         Also, in mono_method_return_message_restore, verify that the array
14168         of out args has the expected lengh.
14169
14170 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14171
14172         * socket-io.c: update the timeout in Poll when the call is interrupte.
14173
14174 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14175
14176         * socket-io.c: support abort/suspend in Select_internal after last
14177         change.
14178
14179 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14180
14181         * threadpool.c: remove warning.
14182
14183 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14184
14185         * icall.c:
14186         * socket-io.[ch]: Select_internal uses poll() now when available, thus
14187         removing the 1024 limit from select(). Runtime part of the fix for
14188         bug #71203.
14189
14190 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14191
14192         * socket-io.c: when resolving the addresses for the same
14193         host returned by gethostname(), get the local IPs from the interface
14194         list. Loopback addresses are discarded if the are interfaces up with
14195         non-loopback ones. Fixes bug #63265.
14196
14197 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
14198
14199         * appdomain.c, verify.c, object-internals.h, reflection.c:
14200         bumped corlib number to 36, and added new extra_flags field
14201         to ReflectionMethodBuilder and friends.  Fixes #75060.
14202
14203 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
14204
14205         * gc.c: register a new weak link only if the object is non-null
14206         (fixes bug#75047).
14207
14208 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
14209
14210         * culture-info.h : short time pattern too.
14211
14212 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
14213
14214         * culture-info.h : expand long time pattern string length.
14215
14216 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
14217
14218         * culture-info-table.h : update (more French date format; #72788).
14219
14220 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
14221
14222         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
14223         the method is static. Fixes #75029.
14224
14225 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
14226
14227         * reflection.c: Update the table_idx field of method builders after
14228         saving the module, since it can change. This is a workaround for
14229         bug #74914. 
14230
14231 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
14232
14233         * culture-info-table.h : update (additional French date format).
14234
14235 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
14236
14237         * icall.c (ves_icall_type_Equals): Revert last change.
14238         
14239         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
14240
14241         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
14242
14243 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
14244
14245         * class-internals.h: Added executioncontext_class field to 
14246         MonoDefaults structure.
14247         * domain.c: Cache System.Threading.ExecutionContext class in 
14248         mono_defaults.
14249         * object.c: Capture the ExecutionContext for asynchroneous calls in
14250          mono_async_result_new.
14251         * object-internals.h: Added execution_context and original_context 
14252         fields to MonoAsyncResult. Added execution_context to MonoThread.
14253         * security-manager.c|.h: Added mono_get_context_capture_method to 
14254         return the capture method (if required by the security manager or by
14255         the framework version used).
14256         * threadpool.c: Apply capture (if present) ExecutionContext in 
14257         mono_async_invoke and revert to original context after it completes.
14258
14259 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
14260
14261         * culture-info-table.h : updated (real hacky solution for zh-CHT).
14262
14263 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
14264
14265         * culture-info-table.h : zh-CHT related workaround.
14266
14267 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
14268
14269         * marshal.c (emit_marshal_custom): Add some error checking and call the
14270         methods in the ICustomMarshaler interface. Fixes #74875.
14271         
14272         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
14273         native->managed wrappers.
14274
14275 2005-05-12  Martin Baulig  <martin@ximian.com>
14276
14277         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
14278         here and use the loader lock.
14279
14280         * mono-debug.c: Properly lock when the debugger is not attached.
14281         (mono_debug_init): Release the initial lock if we're not running
14282         in the debugger.
14283
14284 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
14285
14286         * marshal.c (emit_marshal_custom): Pass through NULL values without
14287         calling the custom marshalling routines.
14288
14289         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
14290         conversion in structures. Fixes #74882.
14291
14292 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
14293
14294         * culture-info-table.h : zh-* cultures were missing.
14295
14296 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
14297
14298         * threads.c: Added a new event background_change_event which is signaled
14299         when a thread changes its background mode.
14300         Moved here several checks previously done in managed code. The checks
14301         require the thread lock, and using the thread lock in managed code
14302         can result in deadlocks.
14303         Merged Start_internal and Thread_internal into a single method. Now 
14304         Thread_internal does all work of creating and starting a thread.
14305         Added icalls for setting and getting the state of the object. Moved from
14306         managed code to avoid locking there.
14307         Added wait_for_tids_or_state_change() which is called instad of
14308         wait_for_tids when waiting for non-backround threads to end. This method
14309         will return if one of the threads ends or the background_change_event
14310         is signaled.
14311         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
14312         the background mode. This method signals the background_change_event
14313         event.
14314         * icall.c:
14315         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
14316         removed Start_internal.
14317         
14318 2005-05-11  Martin Baulig  <martin@ximian.com>
14319
14320         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
14321         to order of some fields to get proper alignment on 64-bit machines.
14322
14323 2005-05-11  Martin Baulig  <martin@ximian.com>
14324
14325         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
14326         changes as they're broken and completely fuck up the debugger.
14327
14328         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
14329
14330 2005-05-10  Martin Baulig  <martin@ximian.com>
14331
14332         * reflection.c (mono_reflection_generic_class_initialize): Don't
14333         call mono_class_setup_parent() here.
14334
14335 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14336
14337         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
14338         send/receive timeout use an integer in milliseconds. We were using a
14339         struct timeval.
14340
14341 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14342
14343         * locales.c:
14344         (internal_get_cultures): reserve the first slot of the array for the
14345         InvariantCulture, which will be filled in managed code.
14346
14347 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
14348
14349         * reflection.c (mono_image_fill_module_table): Initialize the
14350         GENERATION field as well.
14351
14352 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14353
14354         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
14355         Monitor.Enter on the object.
14356
14357 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
14358
14359         * threads.c: Enable the wait for running threads when exiting.
14360         * icall.c: Suspend all threads before exiting.
14361
14362 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
14363
14364         * assembly.c (mono_assembly_load_reference): Fix warning.
14365
14366 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14367
14368         * threadpool.c: changed the default number of threads per cpu. From now
14369         on, the default will be 20 + (5 * number of cpus) instead of 50.
14370
14371 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
14372
14373         * loader.c (mono_method_get_signature_full): Add locking here.
14374
14375 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
14376
14377         * appdomain.c: Moved methods for parsing and freeing assembly
14378         names to assembly.c.
14379         * assembly.c, domain-internals.h: Created public methods for parsing
14380         assembly names. Fixed mono_assembly_load_with_partial_name:
14381         it now finds the best match, taking into account the version,
14382         token and culture specified in the partial name. Also return
14383         the latest version if no version information is specified.
14384
14385 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
14386
14387         * threadpool.c: replace check for SocketAsyncCall class.
14388
14389 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14390
14391         * threadpool-internals.h:
14392         * Makefile.am: added threadpool-internals.h
14393
14394         * threadpool.c: call mono_unhandled_exception on exceptions not handled
14395         that happen in threadpool threads (tested on MS).
14396         (mono_thread_pool_remove_socket): new function that dispatch any pending
14397         AIO call on a socket that is closing. By now only epoll really needs it,
14398         as select/poll wake up when the socket closes.
14399
14400
14401         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
14402
14403 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
14404
14405         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
14406
14407 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
14408
14409         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
14410
14411 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
14412
14413         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
14414         has an abort request, convert it into a suspend request.
14415
14416 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
14417
14418         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
14419         warning for the usage of `UnmanagedFunctionPointerAttribute' which
14420         is not supported yet.
14421
14422 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14423
14424         * image.c: register assemblies loaded from data (bundles) in the loaded
14425         assemblies hash. Fixes bug #74772.
14426
14427 2005-04-29  Martin Baulig  <martin@ximian.com>
14428
14429         * class.c (mono_type_get_name_recurse): Update to the new naming
14430         schema from the latest .NET 2.x beta2.
14431         (mono_class_setup_vtable_general): If we're a generic instance,
14432         copy the vtable from our generic type definition and inflate all
14433         the methods in it.
14434
14435         * loader.c (find_method): Update to the new naming schema from the
14436         latest .NET 2.x beta2.
14437
14438 2005-04-29  Raja R Harinath  <harinath@gmail.com>
14439
14440         * class.c (mono_class_init): Add a mono_loader_unlock to the
14441         #74734 fix.
14442
14443 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
14444
14445         * icall.c (ves_icall_System_Environment_Exit): Remove the 
14446         suspend_all_other_threads () call for the time being, since it can hang.
14447
14448         * threads.c (mono_thread_manage): Similarly, disable the waiting for
14449         the background threads to exit, since it can also hang.
14450
14451         * class.c (mono_class_init): Applied patch from Ankit Jain 
14452         (radical@gmail.com). Avoid pending init errors when a field refers
14453         to a nested class using a typeref. Fixes #74734.
14454
14455         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
14456         this for dynamic modules.
14457
14458 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14459
14460         * threads.c: don't wait for threads that are in the process of aborting
14461         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
14462         and waiting for background threads to finish. This makes xsp and
14463         mod-mono-server exit without random length delays and/or hangs.
14464
14465 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14466
14467         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
14468
14469 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
14470
14471         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
14472         dynamic types to prevent infinite loops. Fixes #74727.
14473
14474         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
14475         ..._is_assignable_to.
14476
14477 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
14478
14479         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
14480
14481 2005-04-25  Martin Baulig  <martin@ximian.com>
14482
14483         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
14484
14485         * domain.c
14486         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
14487
14488         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
14489
14490         * reflection.c (build_compressed_metadata): Set metadata header
14491         version to 2.0.
14492
14493 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
14494
14495         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
14496         number into an integral and a decimal part. Fixes #70473.
14497
14498         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
14499
14500 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
14501
14502         * culture-info-table.h : reflected the latest locale-builder output.
14503
14504 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14505
14506         * threadpool.c: check for SuspendRequested too when deciding if
14507         mono_thread_interruption_checkpoint should be called.
14508
14509 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14510
14511         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
14512         * threads.c: remove interruption_mutex and use Interlocked instead. When
14513         suspending all the threads, wait for all the suspended events at once.
14514         If we're shutting down and get an APC that is going to be queued,
14515         call mono_thread_execute_interruption immediately, as the thread might
14516         be sleeping on a pthread condition or mutex.
14517
14518         * icall.c: call mono_runtime_set_shutting_down before suspending the
14519         threads.
14520
14521         Fixes bug #74693. And now xsp is happier when exiting.
14522
14523 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
14524
14525         * loader.c (mono_stack_walk): Fix #74690.
14526
14527 2005-04-22  Martin Baulig  <martin@ximian.com>
14528
14529         * mono-debug.h (MonoDebugMethodJitInfo): Added
14530         `MonoDebugMethodJitInfo *jit'.
14531
14532         * mono-debug.c (mono_debug_read_method): Cache the
14533         MonoDebugMethodJitInfo in `address->jit'.
14534         (mono_debug_free_method_jit_info): New public method.
14535
14536 2005-04-22  Martin Baulig  <martin@ximian.com>
14537
14538         * class.c (mono_class_is_assignable_from): Disallow
14539         type parameter -> interface.
14540
14541 2005-04-21  Dick Porter  <dick@ximian.com>
14542
14543         * threads.c (mono_thread_create): Turn an assertion into an error.
14544
14545 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
14546
14547         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
14548         
14549         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
14550         Fix some gcc 4.0 warnings.
14551
14552 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
14553
14554         * file-io.c: fix alt dir separator char on unix systems
14555         and cleanup (fixes bug #71214).
14556
14557 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
14558
14559         * marshal.c: Use CALLVIRT instead of CALL when dispatching
14560         a call to a remote domain, since the method may be an
14561         interface method in the client domain. This fixes bug #74192.
14562
14563 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14564
14565         * threadpool.c: recv/send are now performed before going back to managed
14566         code to save one transition.
14567
14568 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14569
14570         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
14571
14572         * metadata/threadpool.c: removed hack to workaround the bug above.
14573
14574         Fixes bug #74618.
14575
14576 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
14577
14578         * reflection.c reflection.h: Fix handling of parameter defaults in
14579         dynamic methods. Also fixes handling of parameter attributes.
14580         Fixes #74609.
14581
14582         * mono-debug.c (mono_debug_close_image): Fix warning.
14583
14584 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14585
14586         * socket-io.h: replaced old unused field with new 'blocking'.
14587         * threadpool.c: restore socket blocking state on windows(tm).
14588
14589 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
14590
14591         * icall.c: don't return the codebase in the AssemblyName[] returned by
14592         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
14593         * object-internals.h: Removed FIXME (fields were presents) and fixed
14594         versioncompat declaration.
14595
14596 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14597
14598         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
14599         not closed, so don't cleanup when it happens.
14600
14601 2005-04-13  Chris Toshok  <toshok@ximian.com>
14602
14603         * mono-debug-debugger.h: change prototype for
14604         mono_debugger_lookup_type.
14605
14606         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
14607         this function, although it should probably be named
14608         mono_debugger_init_type.
14609
14610 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14611
14612         * threadpool.c: fix non-AIO case.
14613
14614 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
14615
14616         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
14617         the built-in profiler to measure just JIT compilation times.
14618
14619 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14620
14621         * threadpool.c: the epollfd might be closed by another thread at
14622         any time, so ignore EBADF at treat it as a "we're closing" sign.
14623
14624 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14625
14626         * threadpool.c: release the semaphores with a count equals to the number
14627         of working threads in both IO and regular pools. Fixed typo that messed
14628         up the count of IO pool threads. Don't initialize the pipe handles if
14629         we're using epoll.
14630
14631 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14632
14633         * threadpool.c: some systems don't like a NULL when deleting the socket
14634         from epoll.
14635
14636 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14637
14638         * threadpool.c: fix semaphore allocation.
14639
14640 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14641
14642         * threadpool.c: added epoll() based implementation for asynchronous IO
14643         that is used instead of the default poll() when available.
14644         It can be disabled by setting MONO_DISABLE_AIO.
14645
14646 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14647
14648         * threadpool.c: windows needs 'closesocket' and instead of returning
14649         0 when the stream is closed while in select, it returns -1. Fixes bug
14650         #74573.
14651
14652 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
14653
14654         * class.c (class_compute_field_layout): Fix the regression caused by
14655         the previous try.
14656
14657 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14658
14659         * threadpool.c: separate pool for socket async. IO.
14660         * threadpool.h: mono_max_worker_threads is not a global any more.
14661
14662 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
14663
14664         * class.c (class_compute_field_layout): Fix #74549.
14665
14666 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14667
14668         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
14669         use 2 connected sockets instead.
14670
14671 2005-04-08  Miguel de Icaza  <miguel@novell.com>
14672
14673         * mono-config.c: Add new entry point for mkbundle
14674         mono_config_parse_memory. 
14675
14676 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14677
14678         * threadpool.c: removed another unused function.
14679
14680 2005-04-08  Ankit Jain  <radical@corewars.org>
14681
14682         * reflection.c (get_default_param_value_blobs): Add 'types'
14683         parameter to get the types encoded in the constant table.
14684         (mono_param_get_objects): Use the type from the constant table,
14685         not the type of the parameter, when creating default values.
14686         Handle null default values correctly.
14687
14688 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14689
14690         * file-io.c:
14691         * file-io.h:
14692         * threadpool.c:
14693         * threadpool.h:
14694         * icall.c:
14695         * socket-io.c: removed dead code for async IO.
14696
14697 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14698
14699         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
14700
14701         * threadpool.c: intercept socket async. calls and pass them to a thread
14702         that is polling and dispatching the job items to the threadpool as
14703         socket become ready. Fixes bugs #71217, #71933.
14704
14705         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
14706         between char and short/ushort arrays.
14707
14708         * socket-io.c: remove dead code.
14709
14710 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
14711
14712         * locales.c,
14713           icall.c : removed InternalToUpper_Comp() and
14714           InternalToLower_Comp().
14715
14716 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
14717
14718         * char-conversions.h : The tables were incorrectly generated. Should
14719           be generated against invariant culture.
14720
14721 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
14722
14723         * object.c (mono_runtime_invoke_array): Fix return value when 
14724         passing pre-created valuetype objects to ctors.
14725
14726         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
14727         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
14728         Fixes #74338.
14729
14730 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
14731
14732         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
14733         only used with --security and hides the wrong corlib version error.
14734
14735 2005-03-30  Joshua Tauberer  <tauberer@for.net>
14736
14737         * class.c: Changed mono_class_name_from_token so that types
14738         outside of a namespace don't have an initial period.  Improved
14739         the g_warning message used in _mono_class_get when loading
14740         fails.
14741         * assembly.c: In mono_assembly_load_reference, when an assembly
14742         can't be found, "No such file or directory" is misleading and
14743         unhelpful because a few paths were checked for the presence of
14744         the assembly.  When that happens (ENOENT), display a nicer
14745         message indicating the directories that were searched.  In all
14746         cases, the warning is made easier to read for non-hackers.
14747
14748 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
14749
14750         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
14751         project/solution.
14752         * appdomain.h|domain.c: Removed inline from functions.
14753         * appdomain.c: Reduced warnings when compiling on windows.
14754         * icall.c: Fixed output_debug declaration to gunichar2*.
14755         * mono-config.c: Reduced warnings when compiling on windows.
14756         * rand.c: Added missing "windows.h". Added missing return value.
14757         * rawbuffer.c: Added missing winsock2.h for windows.
14758         * sysmath.h: Added mono-compiler.h header to allow/ease 
14759         compilation with non-GCC compilers.
14760         * threads.c: Fixed declarations to compile with VS.NET C compiler.
14761         Removed cast warnings.
14762
14763         Adapted from the work of J Lothian (for VC6).
14764
14765 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
14766
14767         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
14768         from default_path.
14769
14770 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
14771
14772         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
14773         the 2.0 profile.
14774
14775 2005-03-27  Raja R Harinath  <harinath@gmail.com>
14776
14777         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
14778         has to be in $(exec_prefix).  $(prefix) is for arch-independent
14779         stuff, and it would probably use $(prefix)/share rather than
14780         $(prefix)/lib.
14781
14782 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14783
14784         * console-io.c: added 2 includes that might be missing.
14785
14786 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
14787
14788         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
14789         profile.
14790
14791         * reflection.c (create_custom_attr): Allocate the params array using
14792         alloca so it gets GC tracking.
14793
14794 2005-03-23  Chris Toshok  <toshok@ximian.com>
14795
14796         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
14797         out some spew.
14798
14799 2005-03-24  Raja R Harinath  <rharinath@novell.com>
14800
14801         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
14802         changes to pick up any changes in prefix, etc.
14803
14804 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14805
14806         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
14807         
14808         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
14809         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
14810
14811 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
14812
14813         * class-internals.h object-internals.h class.c reflection.c: Extend the
14814         mono_lookup_dynamic_token () function to return the class of the
14815         token as well. 
14816
14817         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
14818         well. Fixes #73848.
14819
14820 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
14821
14822         * security-manager.c: Skip inheritance checks for intra-corlib
14823         class inheritance and method overrides. This skips a lot of checks
14824         and (anyway) permissions cannot work until corlib is loaded.
14825
14826 2005-03-23  Martin Baulig  <martin@ximian.com>
14827
14828         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
14829         MONO_TYPE_GENERICINST.  
14830
14831 2005-03-23  Martin Baulig  <martin@ximian.com>
14832
14833         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
14834
14835 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14836
14837         * class.c: added locking comments to some functions.
14838         Cache the interface offsets arrays (saves about 20 KB
14839         of runtime memory in a typical app).
14840         Reduce the time overhead in mono_class_setup_supertypes ().
14841
14842 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
14843
14844         * icall.c: speedup and fix leaks in GetMethodsByName and
14845         GetPropertiesByName.
14846
14847 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
14848
14849         * reflection.c: some locking fixes.
14850
14851 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
14852
14853         * metadata.c: added missing break in case statement.
14854
14855 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
14856
14857         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
14858         typedbyref return values. Fixes #73941.
14859
14860 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
14861
14862         * security-manager.c|h: Added demandunmanaged method and 
14863         suppressunmanagedcodesecurity class to MonoSecurityManager.
14864         Renamed aptc class to allowpartiallytrustedcallers.
14865
14866 2005-03-17  Martin Baulig  <martin@ximian.com>
14867
14868         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
14869
14870 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14871
14872         * file-io.c: disabled file async. IO using aio_*. It uses the
14873         threadpool now. Workaround for bug #73718.
14874
14875 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
14876
14877         * assembly.h, mono-config.c: added code to deal with bundled configs
14878         for bundled assemblies.
14879
14880 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
14881
14882         * *.c, private.h: cleanup, removing old private.h header file.
14883
14884 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
14885
14886         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
14887         and throw_on_unmappable_char attributes.
14888
14889 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
14890
14891         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
14892         _ProcessName_internal.
14893
14894 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
14895
14896         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
14897         #73631.
14898
14899         * icall.c threads.c threads-types.h: Remove slothash icalls as they
14900         are no longer used.
14901
14902 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
14903
14904         * object.c (compute_class_bitmap): Add support for generics. Fixes
14905         #73527.
14906
14907 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
14908
14909         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
14910
14911 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14912
14913         * filewatcher.c: commented out the code for windows watcher, as we don't
14914         use it (we use the managed implementation instead).
14915
14916 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
14917
14918         * object-internals.h (MonoThread): Remove 'unused1' field.
14919
14920         * appdomain.c: Bump corlib version.
14921
14922         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
14923
14924         * reflection.c (mono_reflection_create_runtime_class): Remove the
14925         AssemblyBuilder.Save optimization since it causes too many problems.
14926
14927 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
14928
14929         * exception.c|h: Added mono_get_exception_reflection_type_load to
14930         create a ReflectionTypeLoadException object.
14931         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
14932         to return NULL is a InheritanceDemand fails during reflection. Updated
14933         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
14934         ReflectionTypeLoadException if an InheritanceDemand fails during 
14935         reflection. Added icall mapping for GetLinkDemandSecurity.
14936         * security-manager.c|h: Added ves_icall_System_Security_
14937         SecurityManager_GetLinkDemandSecurity internal call to return the
14938         class and methods permissions set for a LinkDemand. Removed unused
14939         fields in MonoSecurityManager.
14940
14941 2005-03-10  Martin Baulig  <martin@ximian.com>
14942
14943         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
14944         it's a generic instance.
14945
14946 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
14947
14948         * reflection.c (mono_get_object_from_blob): Applied patch from
14949         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
14950
14951         * class.c (mono_class_is_assignable_from): Another try at fixing 
14952         #73469 without breaking anything.
14953
14954 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
14955
14956         * class.c: (mono_class_is_assignable_from): Revert the last changes
14957         since they don't work with generics.
14958         
14959         * class.c (mono_class_is_assignable_from): Fix build bustage.
14960
14961         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
14962         the managed IsAssignableFrom method. Fixes #73469.
14963
14964         * reflection.c (mono_reflection_call_is_assignable_from): New helper
14965         function.
14966
14967 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
14968
14969         * object.c (mono_load_remote_field_new): Fix returning uninitialized
14970         memory when the remoting callback does not sets the out arguments.
14971         Fixes #73007.
14972
14973         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
14974         by mistake.
14975
14976         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
14977
14978         * object-internals.h (MonoStackFrame): Sync with managed object layout.
14979
14980         * appdomain.c: Bump corlib version.
14981
14982 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
14983
14984         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
14985         function.
14986
14987         * threads.c (mono_thread_attach): Detect threads which are not started
14988         by the GC pthread wrappers.
14989
14990 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
14991
14992         * icall.c: Added new icall for RNG.
14993         * rand.c|h: Added new icall to open the RNG. This allows to share a 
14994         single handle on Linux to access /dev/urandom and fix #73183.
14995
14996 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
14997
14998         * object.c: setting the new vtable in a transparent proxy object must
14999         not change the GC descriptor.
15000
15001 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15002
15003         * object.c: fixed compilation without GCJ support.
15004         * reflection.c: for runtime-created types ensure klass->has_references
15005         is correct (bug #73215).
15006
15007 2005-03-02  Martin Baulig  <martin@ximian.com>
15008
15009         * class.c (mono_class_is_assignable_from): Make this work if
15010         `oklass' is a generic instance; fixes #72831.
15011
15012 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
15013
15014         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
15015         with hasthis set.
15016         
15017         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
15018
15019         * marshal.c: Reorganize native->managed marshalling code to also use
15020         the emit_marshal_... functions.
15021
15022 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
15023
15024         * object.c: typed allocs have issues with bitmap sizes > 30,
15025         so check for max_set >= 30.
15026
15027 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
15028
15029         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
15030         managed code. Fixes #73012.
15031
15032         * metadata.h (MonoMarshalSpec): Add elem_mult field.
15033
15034         * metadata.c reflection.c: Load/Emit elem_mult as well.
15035         
15036         * metadata.h (MonoMarshalSpec): Add comment.
15037
15038         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
15039
15040         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
15041         num_elem to -1 if not given.
15042
15043         * object-internals.h (MonoReflectionMarshal): Add has_size field.
15044
15045         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
15046         given values.
15047
15048 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
15049
15050         * null-gc.c (mono_gc_free_fixed): Was not compilable.
15051
15052 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
15053
15054         * reflection.c (encode_marshal_blob): Encode param_num field as well.
15055
15056         * object-internals.h (MonoReflectionMarshal): Add param_num field.
15057
15058 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
15059
15060         * object.c: generalized the reference bitmap creation
15061         and added hooks for the new GC.
15062         * class-internals.c: removed the gc_bitmap field from MonoClass.
15063
15064 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15065
15066         * domain.c: help the compiler to produce better code
15067         in mono_jit_info_table_find ().
15068
15069 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
15070
15071         * object.c: make all allocations look typed.
15072
15073 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15074
15075         * socket-io.c: load Mono.Posix if it's not loaded already
15076         (fixes bug#73033).
15077
15078 2005-02-24  Martin Baulig  <martin@ximian.com>
15079
15080         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
15081         * reflection.c (dup_type): Likewise.
15082
15083 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
15084
15085         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
15086         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
15087
15088 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15089
15090         * domain.c, threads.c, object-internals.h: make the critical thread
15091         local vars use the fast access mode (even when we're compiled in
15092         a lib). Provide accessors to be used by the jit during codegen.
15093
15094 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15095
15096         * appdomain.c: Changed hook functios behavior to include
15097         support for the reflection only assemblies. Some icalls were changed
15098         to support the mentioned assemblies too. Signatures of static methods
15099         try_assembly_resolve and real_load now have an additional parameter:
15100         refonly.
15101
15102         * assembly.c: General changes to mono_assembly_ methods to support
15103         reflection only api. Functions mono_assembly_open, mono_assembly_load,
15104         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
15105         suffix, to support an additional gbool parameter to specify whether
15106         the assembli is reflection only or not. Created some new hook functions 
15107         to add support for reflection only assemblies. Signatures of static 
15108         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
15109         have now an additional parameter: refonly.
15110
15111         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
15112         indicating whether the assembly is reflection only or not.
15113
15114         * exception.c: Add mono_get_exception_invalid_operation.
15115
15116         * icall.c: Throw an InvalidOperationException when trying to invoke
15117         a property/method/event, or trying to set/get the value of a field.
15118         Also add an icall to retrieve the ref_only flag to the
15119         MonoReflectionAssembly.
15120
15121 2005-02-23  Chris Toshok  <toshok@ximian.com>
15122
15123         Part of fix for #72827.
15124         * mono-debug.c (mono_debug_add_method): add lexical block data to
15125         the info we write.  Kind of a hack at the moment - we copy the
15126         lexical block info from the MonoDebugMethodInfo to the
15127         MonoDebugMethodJitInfo here, before writing it.
15128         (mono_debug_read_method): read the lexical block info.
15129
15130         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
15131
15132         * debug-mono-symfile.h: add lexical block support.
15133
15134         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
15135         support.
15136
15137 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15138
15139         * loader.c (mono_lookup_pinvoke_call): Fix warning.
15140
15141         * object.c (mono_runtime_free_method): Call mono_free_method () and
15142         put the TODOs there.
15143
15144         * loader.c (mono_free_method): Free up most memory allocated for 
15145         dynamic methods.
15146
15147 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15148
15149         * reflection.c: properly flag a Type argument to a
15150         named custom attr value (bug #72248).
15151
15152 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15153
15154         * reflection.c: reduce code duplication in named custom
15155         attribute encoding.
15156
15157 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
15158
15159         * reflection.c: properly encode custom attrs of type object
15160         (bug #72649).
15161
15162 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15163
15164         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
15165
15166 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
15167
15168         * socket-io.c: load System.dll if it's not loaded already
15169         (bug #72850 and #70477).
15170
15171 2005-02-21  Martin Baulig  <martin@ximian.com>
15172
15173         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
15174         generic instances.
15175
15176 2005-02-21  Martin Baulig  <martin@ximian.com>
15177
15178         * reflection.c (mono_image_build_metadata): We also need to
15179         "fixup" the MethodImpl table after we computed the final method
15180         indices.  Call fixup_methodimpl() to do that.
15181         (fixup_methodimpl): New private method.
15182
15183 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
15184
15185         * assembly.c: special case mscorlib.dll (bug#72536),
15186         patch from Carlos Alberto Cortez.
15187
15188 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
15189
15190         * threads-types.h threads.c: Fix build bustage.
15191
15192         * threads.c: Use a union for long<->double conversions.
15193
15194         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
15195         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
15196
15197         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
15198         containing the checkpoint call with NOT_TAKEN.
15199         
15200         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
15201         checkpoint before pushing the arguments, so they won't have to be
15202         spilled to stack.
15203
15204 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15205
15206         * domain.c, assembly.c, domain-internals.h: make some data
15207         const and relocation-free.
15208
15209 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
15210
15211         * object.c, appdomain.c, class-internals.h: introduce the
15212         MonoClassRuntimeInfo structure to hold the info needed to
15213         use a class at runtime. Made mono_class_vtable() lock-free
15214         for all the appdomains.
15215
15216 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
15217
15218         * metadata-internals.h, image.c: introduce a per-image mempool to
15219         be used for memory that has the same lifetime as the image.
15220
15221 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
15222
15223         * domain.c: In mono_init_internal(), instead of selecting the first
15224         runtime version supported by an executable, get a list of all
15225         supported versions and select the one for which an mscorlib exists
15226         (since even if the runtime supports a given version, it doesn't mean
15227         that the framework for that version is installed).
15228         Modified get_runtimes_from_exe to support this behavior.
15229         In supported_runtimes, added information about additional system
15230         assembly versions.
15231         
15232         * assembly.c: Added support for more than one system assembly version
15233         per runtime version. Updated the assembly list.
15234         In mono_assembly_remap_version, removed the initial version check,
15235         since we don't know to which version we need to compare until we
15236         get the version set on which the assembly is based.
15237         Moved the code for loading corlib into the new method
15238         mono_assembly_load_corlib(), so it can be used by the initialization
15239         code.
15240         
15241         * domain-internals.h: Updated data structures and added declaration
15242         for mono_assembly_load_corlib.
15243
15244 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15245
15246         * reflection.c (resolve_object): Fix the creation of the signature in 
15247         the SignatureHelper case.
15248
15249         * assembly.c (mono_assembly_remap_version): Fix binary search.
15250         
15251 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
15252  
15253         * class.c: Added inheritance check when a method is overloaded (from a
15254         virtual method or when implementing an interface) and when a class is
15255         inherited. Added functions to set a failure for a class and to 
15256         retreive the exception from a failure.
15257         * class-internals.h: Added fields to MonoClass to keep the exception
15258         information status for inheritance (or other exceptions) to be thrown
15259         later (i.e. not at load time).
15260         * object.c: Throw the inheritance SecurityException when a type is to 
15261         be created with either class or method inheritance violations.
15262         * reflection.c|h: Fix when getting declsec from a class. Removed 
15263         unrequired code for class. Improved sanity in parameter naming.
15264         * security-manager.c|h: Added functions to check for class and method
15265         inheritance.
15266
15267 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
15268
15269         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
15270         and has_finalize in dynamic types as well.
15271
15272 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
15273
15274         * culture-info-table.h : fixed currency format for en-GB (and so on).
15275
15276 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
15277
15278         * gc.c: ensure the GC handles never have 0 as a value.
15279
15280 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
15281
15282         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
15283         a pointer to a struct to unmanaged code. Fixes #72625.
15284
15285 2005-02-16  Martin Baulig  <martin@ximian.com>
15286
15287         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
15288
15289 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
15290
15291         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
15292
15293 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
15294
15295         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
15296
15297         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
15298         UnmanagedFunctionPointerAttribute, use it for determining calling convention
15299         etc. Fixes #71471.
15300
15301         * reflection.c (mono_custom_attrs_get_attr): New helper function.
15302
15303         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
15304
15305 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
15306
15307         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
15308         changes to make the current context a field in MonoThread.
15309
15310 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
15311
15312         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
15313         the last change.
15314         
15315         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
15316         extracted from mono_marshal_get_native_wrapper.
15317
15318         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
15319         to create wrappers around native functions.
15320
15321         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
15322         delegates for arbitrary function pointers. Fixes #71472.
15323
15324 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
15325
15326         * threads.c: cleaned up the code a little.
15327
15328 2005-02-15  Martin Baulig  <martin@ximian.com>
15329
15330         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
15331         the data table.
15332
15333         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
15334         allocate larger chunks if needed.
15335
15336 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15337
15338         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
15339         in by mistake.
15340
15341 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
15342
15343         * domain.c: keep the domains in an array and ensure the domain ids
15344         are kept small, so they can be used as indexes to domain-specific data
15345         with a small memory overhead.
15346
15347 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
15348
15349         * icall.c: Handle byref types in Type icalls. Fixes #72544.
15350
15351 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
15352
15353         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
15354
15355 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
15356
15357         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
15358
15359         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
15360         values.
15361
15362         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
15363         
15364 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
15365
15366         * domain-internals.h: add the hashtable here.
15367
15368         * class-internals.h: Remove `info' from MonoMethod
15369
15370         * domain.c: Add a new hashtable, jit_trampoline_hash
15371
15372 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15373
15374         * object.c: don't set the value of static fields
15375         (fixes bug#72494).
15376
15377 2005-02-11  Martin Baulig  <martin@ximian.com>
15378
15379         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
15380         (mono_debug_add_method): Silently ignore the method if it's too big.
15381         (mono_debug_add_type): Likewise.
15382
15383 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
15384
15385         * threads.c, appdomain.c: remove #ifdefs from the code.
15386
15387 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
15388
15389         * metadata-internals.h: Added flags to MonoAssembly to cache the most
15390         common security informations. This allows us to stay in unmanaged code
15391         when doing LinkDemand and it's special cases (except for the first 
15392         time for initialization). The flags a very much used with --security.
15393         * reflection.c|h: Added code to get declarative security attributes 
15394         for LinkDemand and InheritanceDemand. This required to refactor the
15395         existing code for Demand.
15396         * security-manager.c|h: Added new method fields for the special cases
15397         of LinkDemand.
15398
15399 2005-02-10  Martin Baulig  <martin@ximian.com>
15400
15401         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
15402         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
15403
15404 2005-02-10  Martin Baulig  <martin@ximian.com>
15405
15406         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
15407         debugging code; this is almost a complete rewrite.
15408
15409         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
15410
15411 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15412
15413         * domain.c, object.h: expose mono_string_equal () and 
15414         mono_string_hash ().
15415         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
15416         it's implemented in managed code.
15417
15418 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15419
15420         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
15421         lo leak objects between appdomains.
15422
15423 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
15424
15425         * assembly.c: old compilers compilation fix from 
15426         robertj@gmx.net (Robert Jordan).
15427
15428 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
15429
15430         * class-internals.h: Little reminder for the future.
15431
15432         * debug-helpers.c: Fix up wrapper_type_names
15433
15434 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
15435
15436         * image.c, metadata-internals.h: when loading an image from a file,
15437         mmap all of it and use the same codepaths as when using a
15438         in-memory image: the code is simpler and we use less memory
15439         (both writable and readonly).
15440
15441 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
15442
15443         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
15444         API to alloc runtime data structures that need to be tracked by the
15445         GC and contain pointers.
15446         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
15447         make the code more readable and eventually use a different GC.
15448
15449 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
15450
15451         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
15452         for out arguments.
15453         
15454 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
15455
15456         * object.c: In release_type_locks(), don't release the cctor lock
15457         if it has already been released. This fixes a crash in the
15458         thread5 test.
15459
15460 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15461
15462         * gc.c, marshal.c, icall.c: register a delegate for finalization
15463         only when the native function pointer has been allocated for it.
15464
15465 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15466
15467         * object.c: cleaned up some code, allocate objects that are
15468         pointer free with the atomic malloc variant. Allocate memory
15469         for static data from the mempool if it's pointer-free.
15470         Allocate the bounds array at the end of the array data, when needed.
15471         * object-internals.h, object.h: move a private function in a private
15472         header.
15473         * class.c: handle missing case in tracking references in fields.
15474
15475 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
15476
15477         * class.c, class-internals.h: keep track if a type has
15478         reference fields in either the instance or static fields.
15479
15480 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
15481
15482         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
15483         and renamed to MonoRuntimeInfo. Added fields to store the expected
15484         framework assembly version. Changed mono_get_framework_version and
15485         mono_get_runtime_version for a single mono_get_runtime_info method.
15486         
15487         * assembly.c: Added method to remap system assembly versions to the
15488         current executing runtime version. Removed old mapping code.
15489         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
15490         
15491         * icall.c, reflection.c: Track api changes.
15492
15493 2005-02-06  Miguel de Icaza  <miguel@novell.com>
15494
15495         * loader.c (method_from_memberref): Improve error reporting,
15496         produce the class name instead of the typeref/typedef index. 
15497
15498 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
15499
15500         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
15501
15502 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15503
15504         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
15505         stdcall and charset name mangling.  Reorganize the code and add
15506         some tracing stuff.
15507
15508 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
15509
15510         * monodiet.c: More iters!
15511
15512         * marshal.c: Iter usage.
15513
15514         * icall.c: Iter usage.
15515
15516         * object.c: Use iters.
15517
15518         * debug-helpers.c: More iters
15519
15520 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15521
15522         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
15523         under win32.
15524
15525 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
15526
15527         * mono-debug-debugger.c: use iters
15528
15529         * class.c, class-internals.h: mono_class_setup_events is static
15530         now
15531
15532         * All callers: use iters
15533
15534 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
15535
15536         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
15537         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
15538
15539 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15540
15541         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
15542
15543         * marshal.h: Add prototypes for ldfld/stfld_remote.
15544
15545         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
15546         this is called during startup.
15547         
15548 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
15549
15550         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
15551         MonoThreadsSync struct private in monitor.c. Changed the way
15552         MonoThreadsSync is allocated so it's faster and there is no
15553         need to keep track of it with a finalizer and it uses less memory.
15554         This also finally allows us to allocate mono objects as ptrfree when
15555         there are no reference fields.
15556
15557 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
15558
15559         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
15560         disappearing link to the GC interface and use them to simplify
15561         the gchandles code.
15562
15563 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
15564
15565         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
15566         stfld_remote which call mono_load/store_field_new. This allows methods
15567         calling ldfld/stfld wrappers to be AOTed.
15568
15569         * console-io.c: Include sys/filio.h under solaris.
15570         
15571         * console-io.c: Include curses.h if needed correctly.
15572
15573 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15574         
15575         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
15576         method->klass as well.
15577
15578         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
15579
15580         * class.c (mono_class_init): Switch on lazy initialization of 
15581         methods.
15582
15583         * class.c (mono_class_get_finalizer): Handle the case when the 
15584         finalizer is inherited.
15585
15586 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15587
15588         * console-io.c: <curses.h> is needed by term.h on solaris.
15589
15590 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
15591
15592         * icall.c, class-internals.h, monodiet.c, class.c: Remove
15593         mono_class_setup_properties where possible. Remove this ftn from
15594         the header file, and make it static.
15595
15596 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
15597
15598         * loader.c: Add missing setup_... call.
15599
15600         * class.c: Add missing setup_... calls.
15601
15602         * class.c (mono_class_init): Switch on lazy initialization of 
15603         the generic vtable.
15604         
15605         * class.c (mono_class_init): Fix generics broken by the recent changes.
15606
15607         * monodiet.c (handle_type): Add missing setup_... calls.
15608
15609         * class.c: Back out garbage in previous patch.
15610         
15611         * class.c: Add missing setup_... calls.
15612
15613         * class.c (mono_class_get_method_from_name_flags): Avoid calling
15614         mono_class_setup_methods () if possible.
15615
15616         * class-internals.h (MonoClass): Add 'has_cctor' flag.
15617
15618         * class-internals.h (MonoCachedClassInfo): New structure.
15619
15620         * class.c: Initialize properties and events fields of MonoClass lazily.
15621
15622         * class.c: Add infrastructure for lazily initializing the methods and
15623         vtable fields of MonoClass. Not yet used.
15624
15625         * class.c (mono_class_get_finalizer): New helper function.
15626
15627         * class.c: Add infrastructure for loading some class related data from
15628         an AOT file.
15629
15630         * object.c: Add infrastructure for initializing the vtable from data
15631         in the AOT file.
15632
15633         * gc.c (run_finalize): Use mono_class_get_finalizer ().
15634
15635         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
15636         appropriate initialization function before accessing parts of the
15637         MonoClass structure.
15638
15639         * marshal.c: Fix warnings.
15640         
15641         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
15642
15643         * mono-debug-debugger.c (get_exception_message): Use 
15644         mono_class_get_method_from_name_flags ().
15645
15646 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
15647
15648         * reflection.c, appdomain.c: Replace a few manual searches that
15649         Zoltan missed. (Paolo approved this part of my initial patch).
15650
15651 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
15652
15653         * profiler.c: disable recording statistical events at report time.
15654
15655 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
15656
15657         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
15658         to byteswap arrays of enum values, too (bug #72080).
15659
15660 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
15661
15662         * appdomain.c (set_domain_search_path): Allow this to be called if
15663         domain->setup is not yet set.
15664
15665         * loader.c (mono_method_get_index): New helper function.
15666
15667         * loader.c reflection.c: Use mono_method_get_index ().
15668
15669         * class.c (mono_class_get_method_from_name_flags): New helper method.
15670
15671         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
15672         this.
15673
15674         * class.c (mono_class_get_cctor): New helper method.
15675
15676         * string-icalls.c object.c class.c marshal.c reflection.c: Use
15677         mono_class_get_method () to look up methods.
15678
15679 2005-02-01  Miguel de Icaza  <miguel@novell.com>
15680
15681         * console-io.c: Fix the build, this should work on Windows.
15682
15683 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
15684
15685         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
15686         be set to null to keep things valid
15687
15688 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15689
15690         * icall.c: added Console 2.0 icalls.
15691         * Makefile.am: added console-io.[ch]
15692         * console-io.[ch]: internal calls for Console 2.0 API.
15693
15694 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
15695
15696         * class.c: make sure we consider all the interfaces
15697         when calculating max_interface_id (bug found by
15698         Jeroen Frijters running ikvm).
15699
15700 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
15701
15702         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
15703         valuetype fields to null.
15704
15705         * object.c (set_value): Ditto. Fixes #71669.    
15706
15707 2005-01-31  Martin Baulig  <martin@ximian.com>
15708
15709         * metadata.c (mono_metadata_has_generic_params): New public
15710         function; checks whether something is a generic method.
15711
15712 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
15713
15714         * appdomain.c: fix infinite recursion when adding assemblies.
15715
15716 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
15717
15718         * object.c: Fix small typo to return all items for Environment.
15719         GetCommandLineArgs.
15720
15721 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15722
15723         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
15724         reflection.c: more domain and assembly-unload related fixes
15725         and memory leaks plugs.
15726
15727 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
15728
15729         * 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.
15730
15731 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
15732
15733         * loader.c (mono_method_signature): Make this method lazy
15734         (mono_get_method_from_token): Don't computate the signature here.
15735
15736         Doing this saves quite a bit of memory. I got 90 kb on starting up
15737         monodoc. It should also save some disk reads on startup.
15738
15739         * *: MonoMethod->signature might be NULL now. You *MUST* use
15740         mono_method_signature.
15741
15742 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
15743
15744         * object.c (mono_runtime_get_main_args): Return an array from the
15745         current domain here. Fixes #71938.
15746
15747 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
15748
15749         * monitor.c: formatting changes to comply with the
15750         mono coding style and remove #ifdefs from the code.
15751
15752 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
15753
15754         * metadata.c, private.h: remove some unneeded data
15755         and use a more compact representation for table schemas.
15756
15757 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
15758
15759         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
15760         to get a better distribution in hash tables.
15761         * *.c: use mono_aligned_addr_hash() where appropriate.
15762         * assembly.c: make var static.
15763
15764 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
15765
15766         * domain-internals.h: Put MonoJitInfo on a diet.
15767
15768         * domain.c: Fix a warning.
15769
15770 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15771
15772         * gc.c: rework the gc handles code to reuse handles
15773         when freed.
15774
15775 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
15776
15777         * domain.c: fixed long standing bug in mono_string_equal() which
15778         was brought to light with the ldstr changes.
15779
15780 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
15781
15782         * reflection.c: Remove warning by adding missing include for marshal.h
15783
15784 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
15785
15786         * domain.c, object.c: change the ldstr_table to hold
15787         MonoString* as keys: makes the runtime isinterned lookup
15788         faster and simplifies memory management.
15789
15790 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
15791  
15792         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
15793         possible to add imperative security checks before calling the icall.
15794         * reflection.c: Return security attributes on the original MonoMethod
15795         (and not the wrapped one). This fix permissions on icalls.
15796
15797 2005-01-25  Dick Porter  <dick@ximian.com>
15798
15799         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
15800         the check for mktime() support actually test the mktime() return
15801         value.  "Fixes" bug 71682, though the output is still different to
15802         MS.
15803
15804 2005-01-25  Martin Baulig  <martin@ximian.com>
15805
15806         * class.c (mono_class_is_assignable_from): Make this work for
15807         generic instances.
15808
15809 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
15810
15811         * marshal.c (mono_string_utf8_to_builder)
15812         (mono_string_builder_to_utf16): We might not have ownership of the
15813         string. In thise case, we need to create a new buffer.
15814
15815         * object-internals.h (mono_stringbuilder_capacity): sb->str might
15816         be null, in which case, use the default capacity.
15817
15818 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
15819
15820         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
15821         GC events to the profiler.
15822
15823 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
15824
15825         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
15826         if you don't want the GC to run.
15827
15828 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
15829
15830         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
15831         start providing a GC API and keeping different implementations in
15832         their own file.
15833         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
15834
15835 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
15836
15837         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
15838         mmap rather than allocating a huge buffer.
15839         (mono_debug_close_mono_symbol_file): Free the buffer allocated
15840         above.
15841
15842 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
15843
15844         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
15845         and CheckExecutionRights.
15846         * reflection.c|h: Keep the index of the declarative security to be 
15847         used, instead of the pointer, when AOT compiler is used. Also add 
15848         class initialization when requesting demands.
15849         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
15850         CheckExecutionRights. Both properties are now FALSE by default, and
15851         unmodifiable, unless the --security option is used.
15852
15853 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
15854
15855         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
15856         reflection.c: properly refcount images and assemblies, many leaks fixed.
15857
15858 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15859
15860         * threadpool.c: increase the timeout for threads in the thread pool to
15861         10s.  Fixes bug #67159.
15862
15863 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
15864
15865         * class-internals.h: Sun's compiler insists on explicit
15866         signed on bit fields to handle then correctly.
15867
15868 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
15869
15870         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
15871         Make the size of the array fit only the number of invalid path
15872         chars that we have.
15873
15874         * class.c (_mono_class_get): Improve the error reporting when a
15875         class referenced is not found, to assist debugging. 
15876
15877 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
15878
15879         * threads.c: fix off-by-one error.
15880         * domain.c: free data allocated in the domain.
15881
15882 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
15883
15884         * reflection.c (mono_method_body_get_object): Fill out exception info
15885         as well.
15886
15887         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
15888         structure.
15889         
15890 2005-01-19  Martin Baulig  <martin@ximian.com>
15891
15892         * loader.c (mono_get_method_constrained): Make this work again.
15893
15894 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
15895
15896         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
15897         guint16 to match the managed side.
15898
15899         * reflection.c (mono_reflection_body_get_object): Fill out local
15900         variables array.
15901
15902         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
15903         as well.
15904
15905         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
15906         'local_var_sig_token'.
15907
15908 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
15909
15910         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
15911         System.Drawing.
15912
15913         * reflection.c (mono_method_body_get_object): Handle abstract and
15914         runtime methods.
15915
15916 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
15917
15918         * marshal.c, loader.c, class-internals.h, reflection.c:
15919         store the emthod data for a wrapper in an array instead of a list.
15920
15921 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
15922
15923         * marshal.c: change the code to allocate memory more
15924         conservatively for method wrappers.
15925
15926 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
15927
15928         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
15929         fields from MonoClass to the marshal info structure where they belong.
15930
15931 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15932
15933         * class.c, object.c, class-internals.h, marshal.c: rearrange
15934         some fields and tweak some types to lower memory usage.
15935
15936 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
15937
15938         * threads.c (signal_thread_state_change): Handle the case when the
15939         target thread is the current thread.
15940
15941         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
15942
15943         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
15944         emit_ptr_to_object_conv. 
15945
15946         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
15947         marshalling. Fixes #71352.
15948
15949 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
15950
15951         * metadata.h, blob.h: move table enum to blob.h so it can be included
15952         in any header.
15953         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
15954         cut the size of MonoImage/MonoDynamicImage.
15955
15956 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
15957
15958         * profiler.c (mono_profiler_install_simple): Fix default arguments.
15959
15960 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
15961
15962         * reflection.c, reflection.h, icall.c: add a function to check
15963         if an attribute type is defined for a metadata object.
15964
15965 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
15966
15967         * object-internals.h: Added some needed fields from StringBuilder class.
15968         * marshal.c: Set the maxCapacity when creating a StringBuilder.
15969
15970 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
15971
15972         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
15973         threads before shutting down the runtime.
15974
15975         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
15976
15977 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15978
15979         * object-internal.h, threads.c: implement stacksize and 
15980         parameterized thread start functionality (requires
15981         matching corlib). Marked broken code for later removal.
15982
15983 2005-01-12  Martin Baulig  <martin@ximian.com>
15984
15985         * class-internals.h (MonoGenericClass): Moved the `initialized'
15986         flag to MonoDynamicGenericClass, removed `init_pending'.
15987         (MonoGenericInst): Added `is_reference' flag.
15988
15989 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * reflection.c (mono_image_create_pefile): Only set the pe_offset
15992         inside the MSDOS header. Fixes #71201.
15993
15994         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
15995         gc thread.
15996         (mono_domain_finalize): Ditto.
15997
15998 2005-01-12  Martin Baulig  <martin@ximian.com>
15999
16000         * class.c (mono_get_shared_generic_class): Use the cache for
16001         non-dynamic generic classes.
16002
16003         * class-internals.h (mono_class_create_generic_2): Removed
16004         function prototype, this function is now static inside class.c.
16005
16006         * class.c (mono_class_create_generic_2): Made this static, only
16007         call it from mono_class_init() and mono_class_setup_parent().
16008         (collect_implemented_interfaces_aux): Call mono_class_init() on
16009         the interfaces we collect.
16010         (mono_class_setup_vtable): Call mono_class_init (class->parent).
16011
16012 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16013
16014         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
16015         it a real thread handle.
16016
16017         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
16018         MonoJitExceptionInfo, since each catch clause needs its own variable.
16019         
16020 2005-01-11  Dick Porter  <dick@ximian.com>
16021
16022         * image.c (mono_pe_file_open): New variant on mono_image_open()
16023         that does not set up the CLI metadata; used for FileVersionInfo so
16024         it can get the data for windows binaries too.
16025         
16026         * process.c (process_read_string_block): Don't read off the end of
16027         the StringTable block.
16028
16029         These both fix bug 70766.
16030
16031 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
16032
16033         * gc.c: set some fields to NULL at GC cleanup time.
16034         * threads.c: if we quit the main thread, call exit ().
16035
16036 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
16039
16040 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
16041
16042         * threads.h, threads.c, object.c: added accessor and settor for
16043         main_thread. Handle it specially when exiting from it: wait
16044         for other foreground threads to exit.
16045
16046 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16047
16048         * process.c, verify.c: remove some bloat.
16049
16050 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16051
16052         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
16053         the calling convention to cdecl under win32.
16054
16055 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
16056
16057         * object.c (mono_object_get_size): New function to get the size of
16058         an object instance.
16059
16060         * profiler.c (simple_allocation): Use above.
16061
16062 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
16063
16064         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
16065         ves_icall_System_AppDomain_getRootDomain (as it's not required to
16066         get an appdomain by it's id and we can't assume the root's id is 0).
16067         * domain-internals.h: Change the function prototype to match.
16068         * icall.c: Change the icall table for AppDomain.
16069
16070 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
16071
16072         * locales.c (string_invariant_compare_char): Only compute
16073         GUnicodeTypes in the case where we need them.  Test for ordinality
16074         first and return if so.
16075
16076         From the commit:
16077
16078                 /*
16079                  * FIXME: here we must use the information from c1type and c2type
16080                  * to find out the proper collation, even on the InvariantCulture, the
16081                  * sorting is not done by computing the unicode values, but their
16082                  * actual sort order.
16083                  */
16084
16085 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16086
16087         * loader.c: for P/Invoke methods, allow the "Internal" shared
16088         library name to refer to the calling process symbol namespace.
16089
16090 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16091
16092         * Makefile.am: Add the security manager to the build.
16093         * security-manager.c|h: New. Initialization of the security manager.
16094
16095 2005-01-07  Dick Porter  <dick@ximian.com>
16096
16097         * threads.c: 
16098         * monitor.c: Update thread state during Monitor and WaitHandle
16099         waits.  Fixes bug 71031.
16100
16101 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16102
16103         * reflection.c (property_encode_signature): Correctly handle when the
16104         property has no methods.
16105
16106 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16107
16108         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
16109         
16110         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
16111         fields from mb, not rmb. Fixes #71017.
16112
16113         * marshal.c (emit_ptr_to_str_conv): Add support for 
16114         ByValTStr -> string conversion. Fixes #71015.
16115
16116         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
16117
16118         * mempool.c (mono_mempool_contains_addr): New helper function.
16119
16120 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16121
16122         * metadata.c (mono_metadata_compute_size): Fix size calculation of
16123         HasSematics encoded fields.
16124         
16125         * metadata.c (mono_type_to_unmanaged): Improve error message for 
16126         invalid string marshalling.
16127
16128         * metadata.c: Fix warnings.
16129         
16130 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16131
16132         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
16133         profiler support.
16134
16135 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16136
16137         * domain.c object.c domain-internals.h: Revert part of r38077 since the
16138         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
16139         tests.
16140
16141 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16142
16143         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
16144         so methods containing these can be AOTed.
16145
16146 2005-01-03  Martin Baulig  <martin@ximian.com>
16147
16148         * loader.c (find_method): Removed the hack for generic instances.
16149         (method_from_memberref): If our parent is a generic instance, pass
16150         its generic type definition to find_method() and then inflate the
16151         method.
16152         (mono_get_method_constrained): Pass the generic type definition to
16153         find_method() and inflate the method later.
16154
16155         * class-internals.h (MonoStats): Added `generic_class_count'.
16156
16157         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
16158         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
16159
16160         * reflection.c (mono_custom_attrs_from_params): Don't ignore
16161         generic type definitions.
16162
16163 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16164
16165         * loader.c icall.c: Fix warnings.
16166
16167 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
16168
16169         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
16170         blittable types. Fixes #70864.
16171
16172 2004-12-29  Martin Baulig  <martin@ximian.com>
16173
16174         * icall.c
16175         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
16176
16177         * reflection.c (mono_method_get_object): Create a
16178         "System.Reflection.MonoGenericMethod" for inflated methods; don't
16179         call mono_get_inflated_method().
16180
16181         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
16182
16183 2004-12-27  Martin Baulig  <martin@ximian.com>
16184
16185         * class-internals.h (MonoMethod): Added `is_inflated' flag.
16186         (MonoMethodInflated): Added `inflated' field.
16187
16188         * class.c (mono_class_inflate_generic_method): Don't really
16189         inflate the method here; just set the `is_inflated' flag in the
16190         MonoMethod.
16191         (mono_class_get_inflated_method): Actually inflate the method here
16192         if it's not already inflated; we use the MonoMethodInflated's new
16193         `inflated' field as a cache.
16194
16195 2004-12-26  Martin Baulig  <martin@ximian.com>
16196
16197         * class.c
16198         (inflate_generic_class): Moved some code out of inflate_generic_type().
16199         (mono_class_inflate_generic_method): If we're already inflated,
16200         inflate the context and use the declaring method; ie. make sure
16201         the declaring method of an inflated method is always the generic
16202         method definition.
16203         (mono_class_create_from_typedef): Create
16204         `class->generic_container->context->gclass'.
16205
16206 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
16207
16208         * metadata-internals.h, marshal.c, reflection.c: More
16209         MonoGHashTable->GHashTable.
16210
16211         * domain-internals.h, class.c: Change MonoGHashTable's into
16212         GHashTables for some cases where no gc stuff is used
16213
16214         All users: update apis
16215
16216 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
16217
16218         * metadata.c (builtin_types): Make this `const'. Makes this get
16219         put into the shareable section.
16220         (mono_metadata_init): Casts to make gcc happy.
16221
16222 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
16223
16224         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
16225
16226 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
16227
16228         * icall.c: Added an internal call to retrieve the position and length
16229         of assembly-level declarative security attributes (RequestMinimum, 
16230         RequestOptional and RequestRefuse). This is used by the Assembly class
16231         to re-create the corresponding permission sets.
16232
16233 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
16234
16235         * marshal.c: fix the stelemref wrapper to be type correct
16236         (and faster).
16237
16238 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
16239
16240         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
16241         to do key & 0x7fffffff. Hashtable already does this. It just
16242         results in longer code.
16243
16244 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
16245
16246         * appdomain.c: Bump corlib version.
16247         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
16248         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
16249         * reflection.c|h: Add functions to get declarative security infos
16250         (blob position and length) for assemblies, classes and methods.
16251
16252 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
16253
16254         * reflection.c: sort the constant table (bug #70693).
16255
16256 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
16257
16258         * object-internals.h, threads.c, domain.c: add accessors for
16259         the MonoThread and MonoDomain tls keys.
16260
16261 2004-12-18  Martin Baulig  <martin@ximian.com>
16262
16263         * class.c (inflate_generic_type): If we're inflating a generic
16264         instance, set `ngclass->context->container = context->container';
16265         ie. the container we inflated into.
16266
16267         * metadata.c (mono_metadata_parse_generic_param): Reflect above
16268         inflate_generic_type() changes.
16269
16270 2004-12-17  Martin Baulig  <martin@ximian.com>
16271
16272         * class-internals.h
16273         (MonoGenericClass): Replaced `MonoType *generic_type' with
16274         `MonoClass *generic_class'.  Removed `dynamic_info'; if
16275         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
16276         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
16277
16278 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
16279
16280         * exception.c (mono_exception_from_token): New helper function.
16281
16282 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
16283
16284         * assembly.c (mono_assembly_load_with_partial_name): Call 
16285         mono_assembly_loaded before invoking the preload hooks. Fixes
16286         #70564.
16287
16288         * object-internals.h (MonoThread): Change culture_info and 
16289         ui_culture_info into an array.
16290
16291         * threads.c: Cache culture info objects from more than one appdomain.
16292
16293         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
16294         current UI culture.
16295
16296 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
16297
16298         * threads.h threads.c appdomain.c: Clear the culture_info field of
16299         all threads during unloading if they point to an object in the dying
16300         appdomain.
16301
16302 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
16303
16304         * culture-info.h (TextInfoEntry): New struct
16305         * object-internals.h: sync with managed
16306         * locales.c: fill the `text_info_data' field
16307         * culture-info-tables.h: update
16308
16309 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
16310
16311         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
16312         collector.
16313
16314 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
16315
16316         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
16317         (ves_icall_ModuleBuilder_getMethodToken): Ditto
16318
16319 2004-12-12  Martin Baulig  <martin@ximian.com>
16320
16321         * mono-debug-debugger.c (write_type): If we're an enum and the
16322         builtin types have already been initialized, call mono_class_init().
16323
16324 2004-12-11  Martin Baulig  <martin@ximian.com>
16325
16326         * metadata.c (mono_metadata_load_generic_params): Added
16327         `MonoGenericContainer *parent_container' argument; automatically
16328         compute `container->is_method'; pass the correct owner to
16329         get_constraints().      
16330
16331         * reflection.c (compare_genericparam): Sort the GenericParam table
16332         according to increasing owners. 
16333
16334 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
16335
16336         * profiler.c: allow disabling the default profiler.
16337
16338 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
16339
16340         * decimal.c, icall.c: allow disabling System.Decimal support.
16341
16342 2004-12-09  Marek Safar <marek.safar@seznam.cz>
16343
16344         * reflection.c: Add support for null attribute arguments.
16345
16346 2004-12-09  Martin Baulig  <martin@ximian.com>
16347
16348         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
16349         names to get rid of compiler warnings.
16350
16351 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16352
16353         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
16354         mono_marshal_load_type_info (). Fixes #69625.
16355         (mono_marshal_get_ptr_to_struct): Likewise.
16356
16357 2004-12-08  Martin Baulig  <martin@ximian.com>
16358
16359         * mono-debug.h: Bumped version number to 47.
16360
16361         * mono-debug-debugger.c
16362         (mono_debugger_event_handler, mono_debugger_event): Take two
16363         guint64 arguments insteed of a gpointer and a guint32.  
16364
16365 2004-12-08  Martin Baulig  <martin@ximian.com>
16366
16367         * debug-mono-symfile.h
16368         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
16369         `address' to `native_offset'.
16370
16371 2004-12-08  Martin Baulig  <martin@ximian.com>
16372
16373         * class.c (mono_class_create_from_typespec): Only inflate if we
16374         either have `context->gclass' or `context->gmethod'.
16375
16376 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
16377
16378         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
16379
16380         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
16381
16382         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
16383
16384         * reflection.c (mono_assembly_get_object): Remove the workaround put
16385         in for the release.
16386         
16387         * appdomain.c: Use the corlib_internal field from MonoAssembly.
16388
16389         * appdomain.c: Bump corlib version.
16390
16391         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
16392         be visible in other appdomains.
16393
16394 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
16395
16396         * threads.c: Interlocked inc and dec for longs were messed up,
16397         use a KISS based impl for this. Fixes 70234
16398
16399 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
16400
16401         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
16402
16403 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
16404
16405         * icall.c: fix to follow policy not to allow struct
16406         arguments in icalls.
16407
16408 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16409
16410         * process.c: make the patch that handles spaces in file paths work
16411         on mono/windows too.
16412
16413 2004-12-06  Martin Baulig  <martin@ximian.com>
16414
16415         * class.c (mono_class_create_generic): Call
16416         mono_class_setup_supertypes() if we're dynamic.
16417         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
16418
16419 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
16420
16421         * object-internals.h: Add new fields to MonoThread.
16422
16423         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16424
16425         * icall.c threads-types.h threads.c: Add new icalls.
16426
16427         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
16428
16429         * object-internals.h (MonoReflectionAssembly): Sync object layout with
16430         managed side.
16431
16432         * appdomain.c: Bump corlib version.
16433
16434         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
16435         internal assemblies. Fixes #69181.
16436
16437 2004-12-05  Martin Baulig  <martin@ximian.com>
16438
16439         * class.c (mono_class_inflate_generic_signature): Make this a
16440         no-op if `context' is NULL or we don't have any type parameters;
16441         also copy `sentinelpos'.        
16442
16443 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
16444
16445         * image.c: Add unbox_wrapper_cache.
16446
16447         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
16448
16449         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
16450         function generator.
16451         
16452         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
16453         Fixes #70173.
16454
16455         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
16456         
16457 2004-12-04  Martin Baulig  <martin@ximian.com>
16458
16459         * loader.c (mono_method_get_signature_full): New public function;
16460         like mono_method_get_signature(), but with an additional
16461         `MonoGenericContext *' argument.
16462
16463         * class.c (mono_class_inflate_generic_signature): Formerly known
16464         as inflate_generic_signature(); make this public.
16465
16466 2004-12-04  Martin Baulig  <martin@ximian.com>
16467
16468         * metadata.c
16469         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
16470         instead of a `MonoGenericContainer *'.  
16471         (mono_metadata_parse_array_full): Likewise.
16472         (mono_metadata_parse_signature_full): Likewise.
16473         (mono_metadata_parse_method_signature_full): Likewise.
16474         (mono_metadata_parse_generic_inst): Likewise.
16475         (mono_metadata_parse_generic_param): Likewise.
16476         (mono_metadata_parse_mh_full): Likewise.
16477         (mono_type_create_from_typespec_full): Likewise.
16478
16479 2004-12-03  Martin Baulig  <martin@ximian.com>
16480
16481         * class-internals.h (MonoGenericContainer): Replaced the
16482         `MonoGenericContext * pointer with a `MonoGenericContext'
16483         structure and made it the first element.
16484
16485 2004-12-03  Martin Baulig  <martin@ximian.com>
16486
16487         * class.c
16488         (inflate_generic_type): Set the `context->container' when creating
16489         a new MonoGenericContext.
16490         (mono_class_inflate_generic_method): Likewise.
16491         (mono_class_create_from_typespec): Just use `context->container'
16492         to get the container.
16493
16494         * loader.c (method_from_methodspec): Set `context->parent' from
16495         `context->container' - and if that's a method container, use its
16496         parent.  Also set the `context->container' when creating a new
16497         MonoGenericContext.
16498         (mono_get_method_from_token): Use just `context->container' to get
16499         the container.
16500
16501         * metadata.c (do_mono_metadata_parse_generic_class): Also set
16502         `gclass->context->container'.
16503
16504         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
16505         the `context->container' when creating a new MonoGenericContext.
16506
16507 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
16508
16509         * reflection.c (compare_genericparam): Sort params with identical
16510         owner by their number. Fixes gen-111 on sparc.
16511
16512 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16513
16514         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
16515         around the domain changes.
16516
16517         * appdomain.c (mono_domain_unload): Handle the case when the thread
16518         calling Unload is itself being aborted during unloading. Fixes #70022.
16519
16520         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
16521
16522         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
16523         checkpoint_func as an icall so it gets a wrapper.
16524         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
16525         in the cross-appdomain wrappers too.
16526
16527         * threads.c (mono_thread_has_appdomain_ref): Make this public.
16528
16529         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
16530
16531         * reflection.c: Fix some memory leaks.
16532         
16533 2004-12-02  Martin Baulig  <martin@ximian.com>
16534
16535         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
16536
16537         * metadata.c (generic_class_cache): New static hashtable.
16538         (mono_metadata_lookup_generic_class): New public method.
16539
16540 2004-12-02  Martin Baulig  <martin@ximian.com>
16541
16542         * class.c (mono_class_create_from_typedef): Call
16543         mono_class_setup_parent() and mono_class_create_mono_type() before
16544         parsing the interfaces.
16545
16546 2004-12-02  Martin Baulig  <martin@ximian.com>
16547
16548         * metadata.c (generic_inst_cache): New static hashtable.
16549         (mono_metadata_lookup_generic_inst): New public function.
16550         (mono_metadata_inflate_generic_inst): New public function.
16551         (mono_metadata_parse_generic_inst): New public function.
16552         (do_mono_metadata_parse_generic_class): Use the new
16553         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
16554         since this'll also use the cache.
16555
16556         * reflection.c (mono_reflection_bind_generic_method_parameters):
16557         Use mono_metadata_lookup_generic_inst() to use the new cache.
16558
16559         * class.c (inflate_mono_type): Use
16560         mono_metadata_inflate_generic_inst() to inflate a generic
16561         instance; this'll also use the new cache.
16562
16563         * loader.c (method_from_methodspec): Use
16564         mono_metadata_parse_generic_inst() and
16565         mono_metadata_inflate_generic_inst() rather than parsing it
16566         manually, so we can use the new cache.
16567
16568 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * threads.c (wait_for_tids): Do not incorrectly free threads when 
16571         the wait times out.
16572
16573 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
16574
16575         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
16576         iter->args based on whether parameters are passed in registers (i.e.
16577         MONO_ARCH_REGPARMS is defined)
16578
16579 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
16580
16581         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
16582         the exception message. Fixes #70070.
16583         (method_from_methodspec): Fix warnings.
16584
16585 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16586
16587         * process.c: (complete_path) return the path quoted
16588
16589 2004-12-01  Martin Baulig  <martin@ximian.com>
16590
16591         * class-internals.h (MonoGenericInst): New structure.
16592         (MonoGenericClass): Replaced `type_argc', `type_argv' and
16593         `is_open' with `MonoGenericInst *inst'.
16594         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
16595         `is_open' with `MonoGenericInst *inst'.
16596
16597 2004-11-30  Martin Baulig  <martin@ximian.com>
16598
16599         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
16600
16601         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
16602         to `generic_class_cache'.
16603
16604         * metadata.c
16605         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
16606         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
16607         (mono_generic_inst_is_valuetype): Renamed to
16608         mono_generic_class_is_valuetype().
16609
16610         * class-internals.h
16611         (MonoGenericInst): Renamed to MonoGenericClass.
16612         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
16613         (MonoClass): Renamed `generic_inst' to `generic_class'.
16614         (MonoGenericContext): Renamed `ginst' to `gclass'.
16615
16616         * object-internals.h
16617         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
16618
16619         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
16620         mono_reflection_generic_class_initialize().
16621
16622         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
16623         now known as "System.Reflection.MonoGenericClass".
16624         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
16625
16626 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
16627
16628         * class-internals.h: Added a flag field to MonoClass to cache the
16629         declarative security attributes actions associated with the class.
16630         * domain-internals.h: Added booleans to MonoJitInfo to cache the
16631         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
16632         applicable to the JITted method.
16633         * reflection.c|h: Added functions to extract (as flags) which security
16634         actions are available (declaratively) for a method, class or assembly.
16635         * metadata.c|h: Added functions to search the declarative security
16636         table in the metadata.
16637         
16638 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
16639
16640         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
16641         EXPORTEDTYPES are already in the class name cache, so there is no
16642         need to add extra code here to look at them. Just removes a bit of
16643         cruft.
16644
16645         (ves_icall_System_Environment_get_TickCount): No need for #if
16646         WINDOWS. We already have the code in io-layer.
16647
16648 2004-11-28  Martin Baulig  <martin@ximian.com>
16649
16650         * loader.c
16651         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
16652         Fixes gen-112.cs.
16653
16654 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
16655
16656         * assembly.c (do_mono_assembly_open): Instead of having a
16657         conditional WITH_BUNDLE, incorporate support for bundles here, by
16658         having a global `bundles' variable holding a pointer to the actual
16659         bundles. 
16660
16661         (mono_register_bundled_assemblies): New API call used by the
16662         bundle code. 
16663
16664         See mkbundle.1 for details.
16665         
16666 2004-11-27  Martin Baulig  <martin@ximian.com>
16667
16668         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
16669         the vtable for generic methods.
16670
16671 2004-11-26  Martin Baulig  <martin@ximian.com>
16672
16673         * metadata.c
16674         (mono_metadata_generic_method_hash): New public function.
16675         (mono_metadata_generic_method_equal): Likewise.
16676
16677         * class-internals.h
16678         (MonoGenericContainer): Added `GHashTable *method_hash'.
16679
16680         * reflection.c (ReflectionMethodBuilder): Added
16681         `MonoGenericContainer *generic_container'.
16682         (reflection_methodbuilder_to_mono_method): Don't create a new
16683         MonoGenericContainer each time we're called.
16684         (mono_reflection_bind_generic_method_parameters): Use
16685         `container->method_hash' to cache the results so we don't create a
16686         different method if we're called several times with the same
16687         arguments.
16688
16689         * loader.c (method_from_methodspec): Use the new
16690         `container->method_hash' here, too.
16691
16692 2004-11-26  Martin Baulig  <martin@ximian.com>
16693
16694         * class.c (inflate_generic_signature): Correctly compute
16695         `res->has_type_parameters'.
16696         (mono_class_vtable): Use the `has_type_parameters' flag to
16697         determine whether we're a generic method.
16698
16699         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
16700
16701 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
16702
16703         * object.c (mono_runtime_run_main): Fix a small memory leak.
16704
16705 2004-11-25  Martin Baulig  <martin@ximian.com>
16706
16707         * class.c (set_generic_param_owner): Fixed the loop.
16708
16709 2004-11-25  Martin Baulig  <martin@ximian.com>
16710
16711         * object.c (mono_class_vtable): Don't create any JIT wrappers for
16712         generic methods.
16713
16714 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
16715
16716         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
16717         names. Fixes #69787.
16718
16719 2004-11-24  Martin Baulig  <martin@ximian.com>
16720
16721         * class.c (mono_class_create_generic_2): If we don't have a
16722         `ginst->parent', inflate `gklass->parent' to get our parent.
16723
16724 2004-11-24  Martin Baulig  <martin@ximian.com>
16725
16726         * reflection.c (compare_genericparam): Correctly sort the
16727         GenericParam table; fixes #69779.
16728
16729 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
16730
16731         * reflection.c: When writing a PE file, don't create a huge
16732         buffer in memory. Just write the arrays we have to the file.
16733         This reduces memory usage.
16734
16735         * metadata-internals.h: MonoDynamicStream pefile is no longer used
16736         globally.
16737
16738 2004-11-17  Martin Baulig  <martin@ximian.com>
16739
16740         * class.c (mono_class_init): Don't setup `class->parent' for
16741         dynamic instances; moved this to mono_class_generic_2().
16742         (mono_class_create_generic): Also set `klass->inited' for dynamic
16743         generic instances.
16744         (mono_class_create_generic_2): Don't do anything for dynamic
16745         generic instances.  Set `klass->parent' here and also call
16746         mono_class_setup_parent() here. 
16747
16748         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
16749         `MonoType *parent' argument; set `ginst->parent' before calling
16750         mono_class_create_generic_2(), so we set the correct parent.
16751
16752 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
16753
16754         * reflection.c: allow getting attributes from ModuleBuilder
16755         (used by ikvm).
16756
16757 2004-11-17  Martin Baulig  <martin@ximian.com>
16758
16759         * class.c (mono_class_create_from_typedef): If a type parameter is
16760         inherited from an outer class, set its owner to that class.
16761
16762 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
16763
16764         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
16765           for (int*) written size. This fixes bug #69592.
16766
16767 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
16768
16769         * icall.c: Added IsAuthenticodePresnet internal call.
16770         * image.c|h: New function that check a MonoImage for an Authenticode
16771         signature in the certificate PE data directory.
16772         * security.c|h: New internal call to ask the runtime if an 
16773         Authenticode signature seems referenced in the PE header.
16774
16775 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
16776
16777         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
16778
16779         * reflection.c (mono_image_create_pefile): Free the assembly streams
16780         after writing out the assembly file.
16781
16782         * object.c (mono_runtime_run_main): Fix small memory leak.
16783
16784         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
16785         property access modifiers. Fixes #69389.
16786
16787 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
16788
16789         * domain.c, object.c, object-internals.h, domain-internals.h,
16790         object.h, marshal.c: keep dynamic code info per domain.
16791
16792 2004-11-15  Martin Baulig  <martin@ximian.com>
16793
16794         * class.c (mono_type_get_name_recurse): Put type arguments in
16795         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
16796         see bug #68387.
16797
16798 2004-11-15  Martin Baulig  <martin@ximian.com>
16799
16800         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
16801         (mono_class_setup_vtable): When computing `the_cname' for a
16802         generic instance, don't include the namespace since we'd otherwise
16803         add it twice.
16804
16805 2004-11-15  Martin Baulig  <martin@ximian.com>
16806
16807         * class.c (mono_class_create_generic): Changed return type to void.
16808         (mono_class_create_generic_2): New public function; setup
16809         `class->method', `class->field' and `class->interfaces' here
16810         instead of in mono_class_init().
16811
16812         * class.h (mono_class_create_generic): Moved to class-internals.h.
16813
16814 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
16815
16816         * reflection.c (mono_image_create_pefile): take a file HANDLE.
16817         rather than writing to memory, write to this file. Right now,
16818         we are just writting into a buffer, and copying that. However
16819         we can avoid the buffer later.
16820
16821         (mono_dynamic_stream_reset): new function
16822
16823         * icall.c, object-internals.h: update for the above.
16824
16825 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
16826
16827         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
16828         have been using gc'd memory. First it is slower, unlikely
16829         the comment in the source code said, secondly, it increases
16830         our footprint to do it in the gc.
16831
16832         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
16833         the method so that it does not have to copy to managed code.
16834
16835 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
16836
16837         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
16838
16839 2004-11-12  Martin Baulig  <martin@localhost>
16840
16841         * reflection.c (mono_image_create_token): Allow generic method
16842         definitions here, since they may appear in an `.override'; see
16843         gen-98/gen-99 for an example.
16844
16845 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
16846
16847         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
16848         #69365.
16849
16850         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
16851         descriptive.
16852
16853 2004-11-11  Martin Baulig  <martin@ximian.com>
16854
16855         * class.c (mono_class_setup_vtable): In an explicit interface
16856         implementation, the method name now includes the arity.
16857
16858 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
16859
16860         * object.c (mono_array_full_copy): Fix warning.
16861
16862 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
16863
16864         * appdomain.c: Removed look_for_method_by_name(). Use the new method
16865         mono_class_get_method_from_name() instead.
16866         
16867         * class-internals.h: Added two new types of wrappers. 
16868         Added MonoRemotingTarget enum. Added new trampoline function type, which
16869         takes an additional MonoRemotingTarget value as parameter, so it is
16870         possible to request a trampoline for a specific target.
16871         
16872         * class.c: Added new mono_class_get_method_from_name() method.
16873         
16874         * class.h: In MonoRemoteClass, we can have now to vtables, one for
16875         general remoting sinks and one specific for cross domain calls.
16876         
16877         * debug-helpers.c: Added new wrapper names.
16878         
16879         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
16880         of a remote class.
16881         
16882         * image.c: Porperly delete value objects form the remoting invoke hashtable.
16883         
16884         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
16885         with several other methods (mono_marshal_get_xappdomain_dispatch,
16886         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
16887         and others) can generate a fast remoting wrapper for cross domain calls.
16888         More information can be found in docs/remoting.
16889         Other changes: Removed mono_find_method_by_name, and used
16890         mono_class_get_method_from_name instead.
16891         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
16892         is stored in the remoting invoke hashtable.
16893         
16894         * marshal.h: published the new method for getting the xdomain wrapper,
16895         and also added a method for getting the adequate wrapper for a given
16896         method and target.
16897         
16898         * object-internals.h, object.c: Added a couple of methods for capying and
16899         cloning arrays.
16900         Modified mono_install_remoting_trampoline, which takes the new remoting
16901         trampoline that has a remoting target as parameter.
16902         mono_class_proxy_vtable now also takes a remoting target as parameter, and
16903         will return the most suitable vtable for the target.
16904         Added mono_remote_class_vtable, which returns the vtable of a remote class
16905         (which can be the normal remoting vtable or the xdomain vtable).
16906         
16907         * threads.c: the xdomain invoke and dispatch wrappers must also be
16908         protected against interruptions.
16909
16910 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16911
16912         * icall.c: use memmove in BlockCopyInternal when the source and
16913         destination arrays are the same.
16914
16915 2004-11-09  Martin Baulig  <martin@ximian.com>
16916
16917         * class-internals.h (MonoGenericContainer): Removed `method' and
16918         `signature', replaced them with `is_method' and `is_signature'
16919         flags.  Added `context'.
16920
16921         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
16922         instead of a `MonoGenericContainer *'.
16923
16924         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
16925         for dynamic type parameters.
16926         (mono_metadata_load_generic_params): Setup `container->context'.
16927
16928         * reflection.c (mono_reflection_setup_generic_class): Setup
16929         `tb->generic_container->context'.
16930         (do_mono_reflection_bind_generic_parameters): Use
16931         mono_class_inflate_generic_type() to correctly inflate types,
16932         rather than using our own hack just for MONO_TYPE_VAR.
16933
16934 2004-11-09  Martin Baulig  <martin@ximian.com>
16935
16936         * class.c (mono_class_inflate_generic_method): Small fix; don't
16937         crash here.
16938
16939         * icall.c
16940         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
16941         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
16942         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
16943         (ves_icall_Type_BindGenericParameters): Likewise.
16944         (ves_icall_Type_get_IsGenericInstance): Likewise.
16945         (ves_icall_Type_GetGenericParameterPosition): Likewise.
16946         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
16947         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
16948         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
16949
16950 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
16951
16952         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
16953         assembly versions and public key tokens. Fixes #69113.
16954
16955 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
16956
16957         * metadata.c: fix bug introduced with the type cache changes
16958         on 2004-11-06.
16959
16960 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
16961
16962         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
16963         the MonoClass pointer instead of the token in exception clauses.
16964         * reflection.c: updates for the above and make the code not depend
16965         on the structure of MonoExceptionClause.
16966
16967 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
16968
16969         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
16970         Add support for dynamic assemblies. Fixes #69114.
16971
16972         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
16973
16974 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
16975
16976         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
16977         since most only those methods use it. the code member of
16978         MonoMethodPInvoke was dead, so that can be removed too. Also,
16979         remove inline_count (again, not used), and move slot so that it
16980         can share bits with some other flags. This saves 8 bytes in the
16981         structure and gives us about 50 kb back for mcs helloworld.cs
16982
16983         * *.[ch]: Do naming changes for the above.
16984
16985         * loader.c (mono_method_get_header): Lazily init the header
16986         on first access.
16987         (mono_get_method_from_token): don't init the header here
16988         (mono_free_method): the header may never be allocated
16989
16990         Overall, this saves 150 kb of unmanaged allocations
16991         for mcs helloworld.cs. That accounts for 10% of the unmanaged
16992         memory at runtime.
16993         
16994         * loader.c, loader.h (mono_method_get_header): new accessor.
16995
16996         * *.[ch]: use the above method. Prepares us to lazily load
16997         the header.
16998
16999         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
17000         three warnings, which are actual bugs (see 69206).
17001
17002         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
17003         unused. Saves a cool 4 bytes / method.
17004
17005 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
17006
17007         * metadata.c (builtin_types): Add types for System.Object here.
17008         (mono_metadata_parse_type_full): Cache MonoType*'s that are
17009         for a class or valuetype from klass->this_arg or klass->byval_arg.
17010
17011         On mcs for a hello world, this gets us down from 21836 MonoType's
17012         to 14560.
17013
17014         (mono_metadata_free_type): Account for the above change.
17015
17016 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
17017
17018         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
17019         exception instead of asserting if name is null.
17020         (ves_icall_System_AppDomain_GetData): Ditto.
17021
17022 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17023
17024         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
17025         EnumBuilder.
17026
17027         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
17028         Return NULL when the domain does not have entry_assembly set.
17029
17030         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
17031         Add a 'resource_modules' argument.
17032         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
17033
17034         * reflection.c (mono_reflection_create_runtime_class): Move setting
17035         of wastypebuilder here, so mono_get_type_object () returns a MonoType
17036         for enums too.
17037
17038         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
17039         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
17040         Throw an ArgumentNullException if 'ptr' is null.
17041
17042         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
17043         assemblies here. Fixes #69020.
17044
17045 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17046
17047         * reflection.c (build_compressed_metadata): Fix the previous patch for
17048         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
17049         the stack.
17050
17051 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
17052
17053         * assembly.c (mono_assembly_names_equal): Allow a match if one of
17054         the cultures is false. Fixes #69090.
17055
17056         * reflection.c (build_compressed_metadata): Fix invalid memory read 
17057         detected by valgrind.
17058         
17059         * reflection.c (mono_reflection_get_type): Avoid triggering a 
17060         TypeResolve multiple times for the same type. Fixes #65577.
17061
17062 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
17063
17064         * marshal.c: Avoid using ldftn to call managed functions. It is
17065         much slower than just a call.
17066
17067         * reflection.c (mono_module_get_object): free the basename we
17068         allocate here from glib.
17069         
17070         * reflection.c (ensure_runtime_vtable): make sure to free
17071         overrides.  Also, we were allocating an array of MonoMethod not an
17072         array of MonoMethod*.
17073
17074         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
17075
17076         * image.c (mono_image_close): free image->guid here.
17077
17078 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17079
17080         * reflection.c: Fix some spec conformance issues with the PE file
17081         structures so mcs compiled apps run on the Net 2.0 beta.
17082
17083 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
17084
17085         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
17086         Implement this. Fixes #67264.
17087
17088         * debug-helpers.h debug-helpers.c marshal.c: Move 
17089         mono_find_method_by_name to debug-helpers.c.
17090
17091 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
17092
17093         * object.c (mono_release_type_locks): type_initialization_hash is
17094         a GHashTable.
17095
17096         * reflection.c object.c object-internals.h: Fix warnings.
17097
17098         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
17099         without accessors. Fixes #61561.
17100
17101         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
17102         application base from the root domain if not set. Fixes #65641.
17103         (mono_runtime_init): Fix warning.
17104
17105 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17106
17107         * appdomain.c: call mono_thread_pool_init.
17108         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
17109         of worker threads based on the number of CPUs and the environment
17110         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
17111         for non-windows (windows) systems.
17112
17113 2004-10-27  Chris Toshok  <toshok@ximian.com>
17114
17115         * mono-debug-debugger.c (write_class): don't call mono_class_init
17116         here, as even with the check for (!klass->init_pending), we get
17117         into a situation where we're hitting cycles in class
17118         initialization.  Fixes #68816.
17119
17120 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17121
17122         * image.c: Avoid overwriting values in the loaded_images_hash when an
17123         assembly is loaded multiple times. Fixes #61152.
17124
17125         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
17126         so multiple satellite assemblies for the same name can be loaded.
17127         Fixes #68259.
17128
17129         * mono_domain_assembly_preload: Actually return the loaded assembly, 
17130         not NULL.
17131
17132         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
17133         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
17134
17135         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
17136         pending finalizers are not invoked after the appdomain has been 
17137         unloaded. Fixes #67862.
17138
17139 2004-10-22  Martin Baulig  <martin@ximian.com>
17140
17141         * mono-debug-debugger.c
17142         (mono_debugger_runtime_invoke): Don't box valuetypes.
17143
17144 2004-10-22  Chris Toshok  <toshok@ximian.com>
17145
17146         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
17147         don't hide private methods.
17148
17149 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
17150
17151         * icall.c: Allows the runtime to "share" (when known) the public key
17152         token of an assembly. This avoid the need to recalculate the token 
17153         (from the public key) in managed code.
17154
17155 2004-10-21  Chris Toshok  <toshok@ximian.com>
17156
17157         * debug-helpers.c (append_class_name): argh, revert last patch.
17158         
17159 2004-10-21  Chris Toshok  <toshok@ximian.com>
17160
17161         * debug-helpers.c (append_class_name): use '+' as the delimiter,
17162         not '/', so that it matches what the debugger uses to look up
17163         methods.
17164
17165 2004-10-21  Martin Baulig  <martin@ximian.com>
17166
17167         * mono-debug-debugger.c (mono_debugger_throw_exception): New
17168         public method; this is called each time an exception is thrown and
17169         allows the debugger to use exception catch points.
17170
17171 2004-10-21  Martin Baulig  <martin@ximian.com>
17172
17173         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
17174         the stack pointer and the exception object in some struct and pass
17175         that to the debugger.
17176
17177 2004-10-21  Chris Toshok  <toshok@ximian.com>
17178
17179         * mono-debug-debugger.c (do_write_class): add instance/static
17180         event support.  We don't expose "raise" or "other" yet.
17181         (event_is_static): new method.
17182
17183 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
17184
17185         * mono-debug-debugger.c
17186         (mono_debugger_handle_exception): Remove
17187         bogus return value for fussy compilers.
17188
17189 2004-10-20  Martin Baulig  <martin@ximian.com>
17190
17191         * mono-debug-debugger.c
17192         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
17193         (mono_debugger_handled_exception): Likewise.
17194
17195 2004-10-20  Martin Baulig  <martin@ximian.com>
17196
17197         * mono-debug-debugger.h (MonoDebuggerEvent): Added
17198         MONO_DEBUGGER_EVENT_EXCEPTION.
17199
17200         * mono-debug-debugger.c (mono_debugger_handle_exception): New
17201         public function to send the debugger a notification for an
17202         exception and inform it about a catch/finally clause.
17203
17204 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
17205
17206         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
17207         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
17208         fix 2.95 build. 
17209
17210         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
17211
17212 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
17213
17214         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
17215         marshalled as [In,Out]. Fixes #58325.
17216
17217 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
17218
17219         * reflection.c (mono_method_body_get_object): Implement some fields.
17220
17221 2004-10-12  Martin Baulig  <martin@ximian.com>
17222
17223         * reflection.c (mono_reflection_bind_generic_parameters): Small
17224         fix, correctly retrieve our parent from a generic instance.
17225
17226 2004-10-12  Martin Baulig  <martin@ximian.com>
17227
17228         * metadata.c (mono_metadata_generic_param_equal): We always have
17229         an owner.
17230
17231         * class.c
17232         (mono_class_from_generic_parameter): We need to have an owner.
17233         (my_mono_class_from_generic_parameter): Likewise.
17234
17235         * reflection.c (mono_reflection_setup_generic_class): Renamed to
17236         mono_reflection_create_generic_class() and added a new
17237         mono_reflection_setup_generic_class().  
17238         (mono_reflection_initialize_generic_param): If we're a nested
17239         generic type and inherited from the containing class, set our
17240         owner to the outer class.
17241
17242 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
17243
17244         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
17245
17246         * reflection.c (mono_method_body_get_object): New function to create
17247         a MethodBody object.
17248
17249         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
17250
17251 2004-10-11  Martin Baulig  <martin@ximian.com>
17252
17253         * metadata.c (_mono_metadata_type_equal): Renamed to
17254         do_mono_metadata_type_equal() and made static.
17255
17256 2004-10-11  Martin Baulig  <martin@ximian.com>
17257
17258         * appdomain.c: Bump corlib version number to 28.
17259
17260 2004-10-10  Martin Baulig  <martin@ximian.com>
17261
17262         * class-internals.h
17263         (MonoGenericInst): Added `MonoGenericContainer *container'.
17264         (MonoGenericMethod): Likewise.
17265         (MonoGenericContext): Likewise.
17266         (MonoGenericParam): Added `MonoGenericContainer *owner'.
17267
17268         * metadata.c
17269         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
17270         (do_mono_metadata_parse_generic_inst): Likewise.
17271         (mono_metadata_parse_type_full): New public method.  This is the actual
17272         mono_metadata_parse_type() implementation - with an additional
17273         `MonoGenericContainer *' argument.
17274         (mono_metadata_parse_array_full): Likewise.
17275         (mono_metadata_parse_signature_full): Likewise.
17276         (mono_metadata_parse_method_signature_full): Likewise.
17277         (mono_metadata_parse_mh_full): Likewise.
17278         (mono_type_create_from_typespec): Likewise.
17279         (mono_metadata_interfaces_from_typedef_full): New public method;
17280         this is similar to the other _full() methods, but we take a
17281         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
17282         (mono_metadata_parse_generic_param): Take an additional
17283         `MonoGenericContainer *' argument and lookup the MonoGenericParam
17284         from that container.
17285         (mono_metadata_generic_param_equal): New static method to compare
17286         two type parameters.
17287         (_mono_metadata_type_equal): New static method; takes an
17288         additional `gboolean signature_only' argument - if true, we don't
17289         compare the owners of generic parameters.
17290         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
17291         with a TRUE argument - do a signature-only comparision.
17292
17293         * loader.c: Use the new _full() methods and pass the
17294         MonoGenericContainer to them.
17295
17296         * object-internals.h (MonoReflectionTypeBuilder): Added
17297         `MonoGenericContainer *generic_container' field.
17298         (MonoReflectionMethodBuilder): Likewise.
17299
17300 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
17301
17302         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
17303         case initial images of dynamic assemblies.
17304
17305         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
17306
17307         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
17308
17309         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
17310         length of event->other array.
17311         (typebuilder_setup_events): Ditto.
17312
17313         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
17314         'assembly_by_name' and add an 'assemblies' list.
17315
17316         * assembly.h assembly.c: Add a new search hook for determining whenever
17317         an assembly is already loaded. Use this instead of searching in the
17318         loaded_assemblies list.
17319
17320         * domain.c appdomain.c: Implement the new search hook so loaded 
17321         assemblies are now scoped by appdomain. Fixes #67727.
17322
17323 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
17324
17325         * threads.c (mono_thread_attach): Initialize synch_lock field so
17326         mono_thread_detach works again.
17327
17328         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
17329         'lib' too. Fixes #63130.
17330
17331 2004-10-06  Jackson Harper  <jackson@ximian.com>
17332
17333         * culture-info-tables.h: regenerated.
17334
17335 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
17336
17337         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
17338         implemented by other interfaces in the result. Fixes #65764.
17339         
17340         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
17341         Handle unloadable modules without crashing.
17342
17343         * image.c (load_modules): Revert the previous patch since modules must
17344         have a fixed index inside the array.
17345         
17346         * image.c (load_modules): Don't include native modules in the modules
17347         array.
17348
17349 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
17350
17351         * reflection.h: Add param_defaults field.
17352
17353         * reflection.c: Add support for parameter defaults in dynamic methods.
17354         Fixes #64595.
17355
17356         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
17357         an empty string when a type has no namespace. Fixes #64230.
17358
17359 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
17360
17361         * tabledefs.h: Added "internal" security actions to support non-CAS
17362         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
17363         Note: they do not seems to be used anymore in 2.0 (new metadata format)
17364
17365 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
17366
17367         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
17368         constructor of abstract class. Fixes #61689.
17369
17370 2004-10-04  Martin Baulig  <martin@ximian.com>
17371
17372         * class-internals.h (MonoGenericContainer): New type.
17373         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
17374         `MonoGenericContainer *generic_container'.
17375         (MonoClass): Replaced `gen_params' and `num_gen_params' with
17376         `MonoGenericContainer *generic_container'.
17377
17378         * metadata.c (mono_metadata_load_generic_params): Return a
17379         `MonoGenericContainer *' instead of a `MonoGenericParam *';
17380         removed the `num' argument.
17381
17382 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
17383
17384         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
17385         for dynamic images.
17386
17387         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
17388         machine fields.
17389
17390         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
17391
17392         * reflection.c: Save pe_kind and machine values into the generated
17393         image file.
17394
17395         * appdomain.c: Bump corlib version number.
17396
17397         * object-internals.h: Reorganize layout of LocalBuilder.
17398
17399         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
17400         New helper function.
17401
17402         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
17403         created MonoType for dynamic types. Fixes #66180.
17404
17405 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
17406
17407         * threadpool.c: the ares hashtable needs a critical section around it.
17408         this prevents some nasty segfaults
17409
17410 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
17411
17412         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
17413         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
17414         bug 67324).
17415         
17416 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
17417
17418         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
17419         
17420 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
17421
17422         * image.c: Always canonicalize image file names, to avoid loading
17423         the same assembly twice when referenced using a relative path.
17424
17425 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
17426
17427         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
17428
17429         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
17430
17431         * marshal.c: Fix warnings.
17432
17433 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
17434
17435         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
17436         attempting to marshal the delegate_trampoline as the method_addr.
17437         This patch has a static hashtable of marshalled delegates so that 
17438         we can map delegate_trampoline addresses back to delegates.  This
17439         allows a delegate passed to managed code to be passed back into native
17440         code.  Fixes #67039
17441
17442 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17443
17444         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
17445
17446         * reflection.c (method_encode_code): Align method headers properly.
17447         Fixes #66025.
17448
17449 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17450
17451         * marshal.c: In the runtime invoke wrapper, reset the abort
17452         exception if it is cached. This avoids the automatic rethrowal of 
17453         the exception after the catch of the wrapper. Also check for pending
17454         interruptions before calling the managed method. This is done using
17455         the new method emit_thread_force_interrupt_checkpoint, since the
17456         normal checkpoint method is ignored when running the invoke wrapper.
17457         * object.c: If the abort exception is rethrown, set the abort_exc
17458         field of the thread, so it will be rethrown aftere every catch.
17459         * threadpool.c: Only run an interruption checkpoint if what has been
17460         requested is a stop of the thread (aborts will be ignored).
17461         * threads.c: By default, a thread will now never be interrumped while
17462         running the runtime invoke wrapper (this ensures that runtime_invoke
17463         will always return to the caller if an exception pointer is provided).
17464         There is a new special method mono_thread_force_interruption_checkpoint()
17465         to force an interruption checkpoint even if running a protected
17466         wrapper, which is used by the same runtime invoke wrapper to do a check
17467         at a safe point.
17468
17469 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
17470
17471         * object.c, object-internals.h: Implemented mono_release_type_locks,
17472         which releases the cctor locks held by a thread.
17473         * threads.c, threads.h: In thread_cleanup, release cctor locks held
17474         by a thread. Added mono_thread_exit() method to be used to safely stop
17475         a thread.
17476
17477 2004-09-28  Raja R Harinath  <rharinath@novell.com>
17478
17479         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
17480         Move null check before dereference.  Avoid indexing beyond the end
17481         of the 'modules' array.
17482
17483 2004-09-28  Raja R Harinath  <rharinath@novell.com>
17484
17485         * metadata-internals.h (MonoImage): Add module_count field.
17486         * image.c (load_modules): Set image->module_count.
17487         (mono_image_load_file_for_image): Use image->module_count.
17488         * reflection.c (mono_image_load_module): Append to image->modules array 
17489         of dynamic assembly.
17490         (mono_module_get_object): Fix loop to actually increment index.
17491         Use image->module_count.
17492         * assembly.c (mono_assembly_load_references): Use image->module_count.
17493         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
17494         Likewise.
17495
17496 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
17497
17498         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
17499         Avoid assert on generic types.
17500
17501 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
17502
17503         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
17504
17505         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
17506
17507         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
17508         function to convert a MarshalSpec structure to its managed counterpart.
17509
17510         * reflection.c: Fix warnings.
17511         
17512         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
17513         field.
17514
17515         * icall.c (mono_create_icall_signature): Fix build.
17516
17517 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
17518
17519         * icall.c: Add MakePointType icall.
17520
17521         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
17522         warnings.
17523
17524 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17525
17526         * threadpool.c: reuse allocated slots in the queue.
17527
17528 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
17529
17530         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
17531
17532         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
17533
17534         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
17535         previous change.
17536
17537         * tabledefs.h: Add constants for pinvoke attributes BestFit and
17538         ThrowOnUnmappableChar.
17539
17540         * icall.c (ves_icall_Type_GetPacking): New icall.
17541
17542 2004-09-24  Martin Baulig  <martin@ximian.com>
17543
17544         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
17545
17546 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17547
17548         * appdomain.c:
17549         (mono_domain_set): allow setting a domain that is being unloaded.
17550         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
17551         being unloaded.
17552
17553 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
17556         the GetCustomAttributes icall.
17557
17558 2004-09-23  Martin Baulig  <martin@ximian.com>
17559
17560         * object-internals.h (MonoReflectionGenericParam): Replaced
17561         'has_ctor_constraint', `has_reference_type' and `has_value_type'
17562         with `guint32 attrs'.
17563
17564 2004-09-23  Martin Baulig  <martin@ximian.com>
17565
17566         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
17567
17568 2004-09-23  Martin Baulig  <martin@ximian.com>
17569
17570         * object-internals.h (GenericParameterAttributes): New enum.
17571
17572 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
17573
17574         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
17575         
17576         * class.c (init_events): Fill out event->other field.
17577
17578         * class.c: Fix warnings.
17579
17580         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
17581
17582 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
17583
17584         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
17585         walk which doesn't supply the IL offset.
17586
17587 2004-09-22  Martin Baulig  <martin@ximian.com>
17588
17589         * reflection.c (mono_reflection_setup_internal_class): If we're
17590         System.ValueType, System.Object or System.Enum, set
17591         `klass->instance_size' and create the vtable.
17592         (mono_reflection_create_internal_class): If we're an enum type,
17593         get the base class from our current corlib.
17594
17595 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
17596
17597         * reflection.h (MonoResolveTokenError): New type.
17598
17599         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
17600         icall.
17601
17602         * icall.c: Add an 'error' argument to the ResolveToken icalls.
17603
17604 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
17605
17606         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
17607         Support also calling constructors, but only for already allocated objects.
17608
17609 2004-09-17  Geoff Norton <gnorton@customerdna.com>
17610
17611         * reflection.c (type_get_qualified_name): If the klass is null
17612         return the typename to avoid a NullRefEx.
17613         (encode_cattr_value): Get the qualified name of the boxed type,
17614         not the underlying enumtype.  Fixes #62984.
17615
17616 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
17617
17618         * marshal.c: Fix problems with previous checkin.
17619
17620 2004-09-21    <vargaz@freemail.hu>
17621
17622         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
17623         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
17624
17625         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
17626
17627 2004-09-21  Geoff Norton <gnorton@customerdna.com>
17628
17629         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
17630         should only return a type for pointers, arrays, and passbyref types.
17631         Fixes bug #63841.
17632
17633 2004-09-21  Martin Baulig  <martin@ximian.com>
17634
17635         * domain.c (mono_debugger_check_runtime_version): New public
17636         function.
17637
17638         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
17639
17640 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
17641
17642         * reflection.c: Added missing sort to the declarative security 
17643         attributes table. MS implementation stops seeing the attributes if the
17644         token number regress in the table (as shown by ildasm and permview).
17645
17646 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
17647
17648         * object-internals.h (MonoReflectionModule): Add 'token' field.
17649         
17650         * reflection.c (mono_reflection_get_token): Add support for Module
17651         and Assembly.
17652         (mono_module_get_object): Set 'token' field.
17653         (mono_module_file_get_object): Set 'token' field.
17654
17655         * icall.c: Add new Assembly and Module icalls.
17656
17657         * appdomain.c: Bump corlib version.
17658
17659 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
17660
17661         * loader.h loader.c class.h class.c: Add helper functions for obtaining
17662         tokens of metadata objects.
17663
17664         * reflection.h reflection.c (mono_reflection_get_token): New function
17665         to obtain the token of a metadata object.
17666
17667         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
17668
17669 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
17670
17671         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
17672         
17673         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
17674
17675 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
17676
17677         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
17678         * object-internals.h: Added 3 MonoArray* members to MonoReflection
17679         AssemblyBuilder to access the permissions set in the class lib.
17680         * reflection.c: Added security attributes encoding step in 
17681         mono_image_build_metadata.
17682         * tabledefs.h: Added new security actions defined in 2.0:
17683         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
17684
17685 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
17686
17687         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
17688         macro parameter.
17689
17690 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
17691  
17692         * locales.c: nullify the ICU_collator member of CompareInfo when it is
17693           finalized. There where random SIGSEVs at program termination, when
17694           an object being finalized was trying to do a string comparison and
17695           the current culture was already finalized.
17696  
17697 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17698
17699         * threads.c: call thread_cleanup before finishing the thread if we get
17700         there.
17701
17702 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
17703
17704         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
17705         assemblies from the parent. Fixes #65665.
17706
17707 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
17708
17709         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
17710         modifiers.
17711
17712 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
17713
17714         * reflection.h: add prototype for mono_get_dbnull_object
17715         * reflection.c: add prototypes for get_default_param_value_blobs 
17716         and mono_get_object_from_blob for fussier compilers
17717
17718 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
17719  
17720         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
17721         false deadlock checks in class initialization.
17722  
17723 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
17724
17725         * image.c (mono_image_addref): Fix comment.
17726
17727         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
17728         possible.
17729
17730 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
17731
17732         * reflection.c (mono_param_get_objects): Modified to return
17733         ParameterInfo.DefaultValue object.
17734
17735         (get_default_param_value_blobs):
17736         (mono_get_object_from_blob):
17737         (mono_get_dbnull_object): New helper routines. 
17738
17739         * object.c (mono_get_constant_value_from_blob): New helper routine
17740         carved out from get_default_field_value ()
17741
17742         * object-internals.h (mono_get_constant_value_from_blob): Added
17743         function declaration.
17744
17745 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
17746
17747         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
17748         referenced assemblies. Fixes #62135.
17749
17750         * exception.h exception.c (mono_get_exception_file_not_found2): New
17751         helper function.
17752
17753 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
17754
17755         * class.h class.c: Add mono_type_get_underlying_type ().
17756
17757 2004-09-09  Geoff Norton <gnorton@customerndna.com>
17758
17759         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
17760         Fix GetTypes() to support dynamically created assemblies.
17761
17762 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
17763
17764         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
17765         
17766         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
17767         previous patch.
17768
17769         * reflection.h reflection.c loader.c: Allow dynamic construction of
17770         pinvoke methods. Fixes #65571.
17771         
17772         * reflection.c (mono_reflection_get_type): Revert previous change since
17773         it causes regressions.
17774
17775 2004-09-08  Martin Baulig  <martin@ximian.com>
17776
17777         * class.c (class_compute_field_layout): Don't call
17778         mono_class_layout_fields() for open generic instances.
17779
17780 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
17781         * threads.c appdomain.c: fix typo in GC macro
17782
17783 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17784
17785         * threads.c: don't call mono_thread_detach() in start_wrapper(),
17786         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
17787
17788 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
17789
17790         * image.c (mono_image_close): Applied patch from 
17791         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
17792         assembly is loaded multiple times from data.
17793         
17794         * image.c (mono_image_open): Fix warning.
17795
17796 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17797
17798         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
17799         once. Fixes #58334.
17800         
17801         * reflection.c (mono_reflection_create_runtime_class): Initialize
17802         klass->nested_classes. Fixes #61224.
17803
17804 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
17805
17806         * threads.c: sched_yield() on exit, to allow threads to quit.
17807
17808 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17809
17810         * object.c (mono_unhandled_exception): Remove leftover debug code.
17811
17812 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
17813
17814         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
17815
17816 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
17817
17818         * marshal.c (emit_marshal_array): Really null terminate string arrays.
17819         
17820         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
17821
17822 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17823
17824         * marshal.c (emit_marshal_array): Null terminate string arrays.
17825         
17826         * marshal.c (raise_auto_layout_exception): Fix warning.
17827
17828         * reflection.c (mono_param_get_objects): Initialize the default value
17829         with DBNull.Value, not null. Fixes #62123.
17830
17831 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
17832
17833         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
17834         throw an exception with a cute explanation.
17835
17836 2004-09-06  Dick Porter  <dick@ximian.com>
17837
17838         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
17839         Close the new process's thread handle, as we don't use it.  The
17840         handle stays around forever otherwise.
17841
17842 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * object.c (arith_overflow): Fix warning.
17845
17846         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
17847         calling conventions in method refs. Fixes #65352.
17848
17849         * reflection.c: Fix warnings.
17850
17851 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
17852
17853         * icall.c: Add a new icall for Array.Clear
17854
17855 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
17856
17857         * object.c: When allocating an array, we have to throw
17858         an overflow exception if any of the lengths are < 0.
17859
17860 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
17861
17862         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
17863         properly. Also move implementation of string array marshalling to 
17864         managed code. Fixes #42316.
17865
17866 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17867
17868         * assembly.c: provide more information when loading an assembly fails.
17869
17870 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17871
17872         * filewatcher.c: don't expect the development fam package to be
17873         installed.
17874
17875 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
17876
17877         * marshal.c: Make a copy of the signature cookie since it will be
17878         freed by the caller.
17879         
17880         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
17881
17882         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
17883
17884         * metadata.c (mono_metadata_free_marshal_spec): New function to free
17885         marshal specs.
17886
17887         * marshal.c: More refactoring.
17888         
17889         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
17890         smaller functions.
17891
17892 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
17893
17894         * object.c: In mono_message_invoke, fill the output parameter array after
17895           calling the managed method (it was done before the call). This fixes
17896           bug #59299.
17897
17898 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17899
17900         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
17901         as well.
17902
17903 2004-09-02  Martin Baulig  <martin@ximian.com>
17904
17905         * class.c (mono_class_instance_size): Don't allow generic type
17906         definitions or open generic instances.
17907         (mono_class_array_element_size): If we're a value type, call
17908         mono_class_instance_size() on the original class.
17909
17910         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
17911         handle generic instances.
17912
17913         * mono-debug-debugger.c (write_type): Handle generic instances
17914         like classes.
17915
17916 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
17919         the allocation request fails. Fixes #65089.
17920
17921         * object.c (mono_runtime_free_method): Do not call mono_free_method.
17922         
17923         * object.c (mono_runtime_free_method): New function to free a dynamic
17924         method.
17925
17926         * marshal.c (mono_delegate_free_ftnptr): New function to free the
17927         delegate trampoline.
17928
17929         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
17930         with hasthis as dynamic,
17931
17932         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
17933
17934         * domain.c (mono_jit_info_table_remove): New function to remove an
17935         entry from the jit info table.
17936
17937         * class-internals.h (MonoMethod): Add 'dynamic' field.
17938
17939         * loader.c: Fix warnings.
17940
17941 2004-09-01  Martin Baulig  <martin@ximian.com>
17942
17943         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
17944         instead of mono_debugger_lock() because the latter one is a no-op
17945         unless running in the debugger.
17946
17947 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
17948
17949         * class.c (class_compute_field_layout): Classes with auto-layout or
17950         reference fields are not blittable.
17951         
17952 2004-09-01  Dick Porter  <dick@ximian.com>
17953
17954         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
17955         mono_image_get_filename() to get the assembly location.
17956
17957         * icall.c:
17958         * metadata.h: Fix compile warnings
17959
17960 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
17961
17962         * class.c (class_compute_field_layout): System.Object is blittable.
17963
17964         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
17965         as in/out. Fixes #59909.
17966
17967 2004-09-01  Martin Baulig  <martin@ximian.com>
17968
17969         * metadata.h (MONO_TYPE_ISREFERENCE): Call
17970         mono_metadata_generic_inst_is_valuetype() if we're a generic
17971         instance to check whether our underlying type is a reference type.
17972
17973 2004-09-01  Martin Baulig  <martin@ximian.com>
17974
17975         * metadata.c (mono_type_size): If we're a generic instance, call
17976         mono_class_value_size() for value types.
17977
17978 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
17979
17980         * marshal.c: Implement more custom marshalling functionality. Fixes
17981         #64915.
17982
17983 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17984
17985         * mono-debug.c, debug-mono-symfile.c: add some locking love.
17986
17987 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
17988
17989         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
17990
17991         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
17992
17993         * icall.c: Fix some warnings.
17994
17995         * threads.c (abort_appdomain_thread): Fix unref errors.
17996         (mono_thread_current): Fix THREAD_DEBUG define.
17997
17998 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
17999
18000         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
18001
18002         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
18003
18004 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
18005
18006         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
18007         string arrays.
18008
18009 2004-08-28  Martin Baulig  <martin@ximian.com>
18010
18011         * metadata.c
18012         (mono_metadata_generic_inst_is_valuetype): New public function.
18013
18014         * metadata.h (MONO_TYPE_ISSTRUCT): Call
18015         mono_metadata_generic_inst_is_valuetype() if we're a generic
18016         instance to check whether our underlying type is a valuetype.
18017
18018 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
18019
18020         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
18021         #63768.
18022
18023 2004-08-25  Martin Baulig  <martin@ximian.com>
18024
18025         * loader.c (mono_get_method_from_token): Abstract methods can also
18026         be generic and thus have type parameters.
18027
18028         * metadata-internals.h
18029         (MonoDynamicImage): Added `GPtrArray *gen_params'.
18030
18031         * reflection.c (mono_image_get_generic_param_info): Don't create a
18032         metadata row, just add an entry to the `gen_params' array.
18033         (build_compressed_metadata): Sort the `gen_params' array and then
18034         actually create the metadata.
18035
18036 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18037
18038         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
18039
18040 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18041
18042         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
18043
18044 2004-08-24  Martin Baulig  <martin@ximian.com>
18045
18046         * class.cs (mono_class_is_subclass_of): Like an interface, a
18047         generic instance also derives from System.Object.
18048
18049 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
18050
18051         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
18052         custom modifiers to be in any order. Fixes #61990.
18053
18054 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18055
18056         * object.c: Register mono_object_new_fast icall.
18057         
18058         * object.c (mono_class_get_allocation_ftn): Return to calling
18059         mono_object_new_fast, since it seems faster to compute the object 
18060         size in unmanaged code than passing it as a parameter.
18061
18062         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
18063
18064         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
18065         this function with Boehm as the oom handler, so we don't have to check
18066         the result of GC_malloc.
18067
18068         * object.c: Remove checks for oom.
18069
18070         * object.h object.c (mono_class_get_allocation_ftn): New function to
18071         return the icall which can be used to allocate an instance of a given
18072         class. 
18073
18074         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
18075
18076         * class-internals.h: Add 'enabled' field.
18077
18078 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
18081
18082 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
18083         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
18084         value 0x0010.
18085
18086 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18087
18088         * appdomain.c: use the Tls function for appdomain too,
18089         at Zoltan's request. Actually return in mono_context_get
18090
18091         * appdomain.c, profiler.c, threads.c: use __thread
18092
18093 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18094
18095         * appdomain.c threads.c: Call GC_CreateThread on windows.
18096
18097         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
18098         multiple libraries since this don't work on windows.
18099
18100 2004-08-18  Martin Baulig  <martin@ximian.com>
18101
18102         * class-internals.h
18103         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
18104         MonoMethodHeader.
18105
18106         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
18107         MonoMethodNormal since we also need it for abstract and interface
18108         methods.
18109
18110         * reflection.c
18111         (build_compressed_metadata): Sort the GenericParam table.
18112         (mono_image_create_token): Added `gboolean create_methodspec'
18113         argument; this is false when generating a MethodImpl token.
18114         (reflection_methodbuilder_to_mono_method): Abstract and interface
18115         methods may also have generic parameters.
18116
18117 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18118
18119         * appdomain.c: thread local alloc
18120
18121 2004-08-17  Martin Baulig  <martin@ximian.com>
18122
18123         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
18124
18125         * icall.c
18126         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
18127         argument.
18128
18129         * class.c (mono_type_get_full_name): New public function.
18130         (mono_type_get_name): Don't include the type arguments.
18131
18132 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18133
18134         * Makefile.am: Build static versions of libmetadata and libmonoruntime
18135         for inclusion into the mono executable.
18136
18137 2004-08-16  Martin Baulig  <martin@ximian.com>
18138
18139         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
18140         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
18141
18142 2004-08-14  Martin Baulig  <martin@ximian.com>
18143
18144         * class.c (dup_type): Also copy the `byref' field.
18145
18146 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18147
18148         * reflection.c (create_dynamic_mono_image): Revert the last change 
18149         since it breaks bootstrap.
18150
18151 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18152
18153         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
18154
18155         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
18156         not free them with g_free.
18157
18158 2004-08-11  Martin Baulig  <martin@ximian.com>
18159
18160         * reflection.c (mono_reflection_setup_internal_class): Also call
18161         mono_class_setup_mono_type() if we already have a `tb->type.type'.
18162
18163 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
18164
18165         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
18166         called during default (first) AppDomain creation. Keep track of
18167         Evidence when loading assemblies.
18168
18169 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18170
18171         * opcodes.c, opcodes.h: reduce runtime relocations.
18172
18173 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18174
18175         * culture-info.h, locales.c: fixes and chages to sue the new
18176         optimized format of the locale data.
18177         * culture-info-tables.h: regenerated.
18178
18179 2004-08-06  Geoff Norton <gnorton@customerdna.com>
18180         
18181         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
18182
18183 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
18184
18185         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
18186         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
18187         * domain-internals.h: icall declaration.
18188         * icall.c: icall registration.
18189         * object-internals.h: New fields in MonoAssembly for CAS.
18190
18191 2004-08-05  Duncan Mak  <duncan@ximian.com>
18192
18193         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
18194         CEE_LDELEM_ANY.
18195
18196 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
18197
18198         * reflection.c: fix to deal with object[] arrays in custom ctors
18199         (bug #62550).
18200
18201 2004-08-05  Martin Baulig  <martin@ximian.com>
18202
18203         * class.c (mono_class_array_element_size): Added support for
18204         generic instances and correctly handle "recursive" types.
18205
18206 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18207
18208         * assembly.c: Fix warnings.
18209
18210 2004-08-04  Martin Baulig  <martin@ximian.com>
18211
18212         * class.c
18213         (mono_type_get_name_recurse): Added `gboolean include_arity'
18214         argument specifying whether or not we should include the generic
18215         arity in the type name.
18216         (_mono_type_get_name): New static function.
18217         (mono_class_setup_vtable): If we're a generic instance, don't
18218         include the generic arity in the names of explicit method
18219         implementations.        
18220
18221 2004-08-03  Martin Baulig  <martin@ximian.com>
18222
18223         * class.c (mono_type_get_name_recurse): Enclose the generic type
18224         arguments in `<', '>'.
18225
18226 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
18227
18228         * gc.c: make GC warning messages use the trace API, they are just
18229         noise to most of the users.
18230
18231 2004-08-03  Martin Baulig  <martin@ximian.com>
18232
18233         * debug-mono-symfile.c (read_string): Correctly read the string.
18234
18235 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18236
18237         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
18238         
18239         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
18240         icalls.
18241         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
18242
18243 2004-07-30  Martin Baulig  <martin@ximian.com>
18244
18245         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
18246         Reflect latest symbol writer changes.   
18247
18248 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
18249
18250         * object.c: always create an object if null is passed
18251         to Invoke() where a valuetype is expected.
18252
18253 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
18254
18255         * marshal.c (mono_marshal_init): make managed
18256         signatures match native ones better for 64bits.
18257
18258 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18259
18260         * appdomain.c: hack to build correctly the private bin path on windows.
18261         Fixes bug #61991.
18262
18263 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18264
18265         * assembly.c: Load mscorlib from the correct framework directory
18266           (mono/<version>/mscorlib.dll).
18267         * appdomain.h: Added prototypes for new functions.
18268         * internals.h: Added some prototypes.
18269         * domain.c: When initializing the runtime, get from the executable and
18270           the configuration files the runtime version that the app supports.
18271           Added support methods for reading app.exe.config. Added list of versions
18272           supported by the JIT. Added two new methods: mono_init_from_assembly,
18273           which initializes the runtime and determines the required version from
18274           the provided exe file, and mono_init_version, which initializes
18275           the runtime using the provided version.
18276         * icall.c: Get machine.config from version-specific directory.
18277         * reflection.c: When generating an image, embed the version number
18278           of the current runtime.
18279
18280 2004-07-28  Dick Porter  <dick@ximian.com>
18281
18282         * socket-io.c
18283         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
18284         returned sockaddr size before creating the remote address object.
18285         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
18286         61608.
18287
18288 2004-07-28  Dick Porter  <dick@ximian.com>
18289
18290         * locales.c (string_invariant_compare_char): Fix invariant char
18291         compares between upper and lower cases.  Fixes bug 61458.
18292
18293 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
18294         
18295         * marshal.c: actually cache stelem.ref wrappers.
18296         
18297 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18298
18299         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
18300         sections and remove the mono_cli_rva_map () function.
18301
18302 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18303
18304         * debug-mono-symfile.c: fix one more endianess issue, from a patch
18305         by Geoff Norton (<gnorton@customerdna.com>).
18306
18307 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
18308
18309         * class.c: fix class loads for pointer types (typeof(int) !=
18310         typeof(int*)).
18311
18312 2004-07-27  Martin Baulig  <martin@ximian.com>
18313
18314         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
18315         reading the debugging information from an external ".mdb" file.
18316
18317 2004-07-24  Martin Baulig  <martin@ximian.com>
18318
18319         * reflection.c (mono_image_get_type_info): Only write a class
18320         layout entry if we actually have a size or a packing size.
18321
18322 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
18323
18324         * reflection.c (type_get_fully_qualified_name): 
18325         insert cast to get type checking of ?: with non-gcc compilers
18326
18327 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
18328
18329         * rand.c: use g_getenv for both lookups of
18330         MONO_EGD_SOCKET
18331
18332 2004-07-17  Martin Baulig  <martin@ximian.com>
18333
18334         * reflection.c (mono_reflection_bind_generic_method_parameters):
18335         Set `gmethod->reflection_info'.
18336
18337 2004-07-17  Martin Baulig  <martin@ximian.com>
18338
18339         * class.c (mono_class_create_from_typedef): Insert the newly
18340         created class into the hash table before computing the interfaces
18341         since we could be called recursively.
18342
18343 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18344
18345         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
18346         function to implement stelem.ref in managed code
18347         * class-internals.h, debug-helpers.c: a new wrapper type
18348         for the above.
18349
18350 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
18351
18352         * gc.c: allow GC handles to work even when no GC is compiled in.
18353         Fix part of bug #61134 (GetAddrOfPinnedObject).
18354
18355 2004-07-13  Peter Williams  <peter@newton.cx>
18356  
18357         * process.c (complete_path): Make sure we don't attempt to execute
18358         directories.
18359  
18360 2004-07-12  Geoff Norton <gnorton@customerdna.com>
18361
18362         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
18363           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
18364           and will add/subtract the hour if needed
18365
18366 2004-07-12  Martin Baulig  <martin@ximian.com>
18367
18368         * reflection.c (mono_field_get_object): If we have
18369         `field->generic_info', take the attributes from
18370         `field->generic_info->generic_type'.    
18371
18372 2004-07-12  Martin Baulig  <martin@ximian.com>
18373
18374         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
18375         This function must be called before initializing the runtime.
18376         (mono_debug_init_1): New function; call this after initializing
18377         the runtime, but before loading the assembly.  It tells the
18378         debugger to load corlib and the builtin types.
18379
18380         * mono-debug-debugger.c: Did some larger changes in the debugging
18381         code; support recursive class declarations, make sure we actually
18382         add all classes.
18383
18384 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18385
18386         * debug-helpers.c: undo my previous patch and fixed the real issue in
18387         ../mini/exceptions-x86.c
18388
18389 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18390
18391         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
18392         when no HOME env. variable was set and a NullRef was thrown in a .cctor
18393         called from other .cctors.
18394
18395 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
18396
18397         * loader.c: Removed the mono_loader_wine_init hack now that we are
18398         doing a managed version of Windows.Forms.
18399
18400 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18401
18402         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
18403         threadpool.c, threads.c: remove static data from rootset.
18404
18405 2004-07-09  Dick Porter  <dick@ximian.com>
18406
18407         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
18408         Don't do any more processing if the matched length was 0.  It was
18409         increasing the size of the string before.  Fixes bug 61167.
18410
18411 2004-07-09  Dick Porter  <dick@ximian.com>
18412
18413         * socket-io.h:
18414         * socket-io.c
18415         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
18416         Add support for SO_PEERCRED if its available.
18417
18418 2004-07-09  Peter Bartok <pbartok@novell.com>
18419         * loader.c: winelib.exe.so error message is now only displayed if
18420         MONO_DEBUG is set. To help us avoid questions when people are trying
18421         out the new Managed.Windows.Forms.
18422
18423 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18424
18425         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
18426         for isinst and castclass wrappers.
18427
18428         * class-internals.h icall.c: Move registration and lookup of JIT icalls
18429         to libmetadata from the JIT, so they could be used by the marshalling
18430         code and the interpreter.
18431
18432         * marshal.c: Register marshalling related JIT icalls here instead of
18433         in mini.c. Use CEE_MONO_ICALL instead of the family of 
18434         CEE_MONO_PROC<x> opcodes to call marshalling functions.
18435
18436         * metadata.h: Remove unneeded marshalling conversions.
18437
18438         * opcodes.c: Update for new opcodes.
18439         
18440 2004-07-08  Martin Baulig  <martin@ximian.com>
18441
18442         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
18443         (mono_debug_get_domain_data): Make this function static.
18444
18445 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
18446
18447         * gc.c, object.h: add nice GC handle API for embedders.
18448
18449 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18450
18451         * reflection.c: more changes for the new api
18452
18453         * object.c: When we reflect on a field w/ a constant value, it
18454         will not have a memory location, so we must access metadata. Also,
18455         allow easier reading of strings so that we can read them from
18456         the constant data.
18457
18458         * class.c (mono_class_layout_fields): no need for literal fields here.
18459
18460         * class-internals.h: api changes for const fields
18461
18462         * icall.c (ves_icall_get_enum_info): use new apis for const fields
18463
18464 2004-07-06  Martin Baulig  <martin@ximian.com>
18465
18466         * mono-debug.h: Increment version number to 44.
18467
18468         * mono-debug.c (mono_debug_add_wrapper): The second argument is
18469         now a gpointer, rewrote this whole method.
18470
18471         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
18472         function.  Add information about the wrapper in a new "misc table".
18473
18474         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
18475         for the new misc table.
18476
18477 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * metadata-internals.h image.c: Add a cache for helper signatures.
18480
18481         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
18482
18483 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
18486         delegates from a delegate. Fixes #61033.
18487         
18488         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
18489         marshalling of stringbuilder arrays. Fixes #59900.
18490
18491 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18492
18493         * icall.c: Add EnumBuilder:setup_enum_type icall.
18494
18495 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
18496
18497         * icall.c: Added a new icall for the property version of
18498         OffsetOfStringData.
18499
18500 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
18501
18502         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
18503         it has a constant size across platforms.
18504
18505         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
18506         stack trace.
18507
18508 2004-06-29  Martin Baulig  <martin@ximian.com>
18509
18510         * mono-debug.c (mono_debug_add_method): Protect the whole function
18511         in mono_debugger_lock(), not just parts of it.
18512
18513 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18514
18515         * reflection.c: make sure padding bytes in heaps are zeroed.
18516
18517 2004-06-24  David Waite  <mass@akuma.org>
18518
18519         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
18520         image.c, loader.c, locales.c, marshal.c, metadata.c,
18521         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
18522         string-icalls.c, threads.c: change to C90-style comments from C99 /
18523         C++ -style
18524
18525 2004-06-24  Dick Porter  <dick@ximian.com>
18526
18527         * threads.c
18528         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
18529         return createdNew.  Fixes bug 60412.
18530
18531         * threads-types.h: 
18532         * icall.c: Add createdNew parameter to CreateMutex icall
18533
18534 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18535
18536         * reflection.c, object-internals.h: save default value in params.
18537
18538 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18539
18540         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
18541         no need to build a new path combining that with the application base.
18542         Fixes bug #60442.
18543
18544 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
18545
18546         * reflection.c: fixed minor standard compliance issues.
18547
18548 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
18549
18550         * reflection.c: fixed issue with encoding some custom attributes
18551         (arrays in properties and fields, bug #60411).
18552
18553 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18554
18555         * reflection.c: fix start address when copying the public key token.
18556
18557 2004-06-23  Martin Baulig  <martin@ximian.com>
18558
18559         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
18560         the `exc' object in a static object to put it into the GC's root set.
18561
18562 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
18563
18564         * reflection.c: make mono_reflection_setup_internal_class ()
18565         callable a second time to setup a new parent class.
18566
18567 2004-06-23  Dick Porter  <dick@ximian.com>
18568
18569         * threads.c: Check for WAIT_IO_COMPLETION return values.
18570
18571 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
18572
18573         * appdomain.c: Removed the g_free on the public key token. Now copy 
18574         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
18575         * assembly.c: Added public key token string value when loading 
18576         assemblies. Fix bug #60439.
18577         * icall.c: Added missing informations (like public key) in 
18578         GetReferencedAssemblies. Fix #60519.
18579         * image.h: Changed definition for public key token from const char*
18580         public_tok_value to guchar public_key_token [17];
18581         * reflection.c: Updated for changes to public key token.
18582
18583 2004-06-22  Lluis Sanchez Gual
18584
18585         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
18586         for the field in base classes.
18587
18588 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
18589
18590         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
18591         mark headers as not supported, they are installed only for use by the
18592         debugger.
18593
18594 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
18595
18596         * *.c, *.h: avoid namespace pollution in public headers.
18597
18598 2004-06-21  Martin Baulig  <martin@ximian.com>
18599
18600         * exception.c (mono_get_exception_security): It's in
18601         "System.Security", not in "System".
18602
18603         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
18604         the exception classes.
18605
18606 2004-06-21  Martin Baulig  <martin@ximian.com>
18607
18608         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
18609         Protect the exception object from being finalized.
18610
18611 2004-06-21  Martin Baulig  <martin@ximian.com>
18612
18613         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
18614         public function.
18615
18616 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
18617
18618         * reflection.c: Load the assembly in mono_reflection_type_from_name,
18619         if it was not loaded before. Fix parts of #60439.
18620
18621 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
18622
18623         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
18624         code that was broken since Ben's change: wrappers are now
18625         dependent on the method signature only again.
18626
18627 2004-06-21  Martin Baulig  <martin@ximian.com>
18628
18629         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
18630         added interface support.
18631
18632 2004-06-21  Martin Baulig  <martin@ximian.com>
18633
18634         * class.c (mono_vtable_get_static_field_data): New public method.
18635
18636 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
18637
18638         * filewatcher.c : Windows build fix to be compliant with API changes.
18639
18640 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18641
18642         * class.h, class.c: more accessors.
18643         * metadata.h, metadata.c: prepare for hiding MonoType and
18644         MonoMethodSignature: people should use the accessors from now on
18645         outside of the tree.
18646
18647 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
18648
18649         * *.c, *.h: more API cleanups.
18650
18651 2004-06-18  Jackson Harper  <jackson@ximian.com>
18652
18653         * assembly.c: Trace loading assemblies.
18654         * loader.c: Trace loading native libraries.
18655         * mono-config.c: Trace loading config files.
18656         
18657 2004-06-18  Dick Porter  <dick@ximian.com>
18658
18659         * locales.c: Tell ICU the lengths of strings, it can cope with
18660         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
18661
18662 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18663
18664         * image.c: swapped name/filename;
18665
18666 2004-06-18  Martin Baulig  <martin@ximian.com>
18667
18668         * mono-debug-debugger.c (write_class): Write the parent class at
18669         the end of the header.
18670
18671 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
18672
18673         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
18674
18675 2004-06-17  Raja R Harinath  <rharinath@novell.com>
18676
18677         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
18678         (bundle_obj): New conditional define.
18679         (BUILT_SOURCES): Remove.
18680         ($(bundle_srcs)): Make parallel-make safe.
18681         (libmonoruntime_la_LIBADD): Make unconditional.
18682         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
18683         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
18684
18685 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
18686
18687         * culture-info-tables.h: It was inconsistent with the latest
18688           supp info files.
18689
18690 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
18691
18692         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
18693         be loaded.
18694
18695         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
18696         with gcc 2.95.
18697
18698 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18699
18700         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
18701         cleaned up public header threads.h.
18702
18703 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18704
18705         * Makefile.am, *.c, *.h: more API cleanups.
18706
18707 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18708
18709         * Makefile.am: removed monosn from compilation.
18710         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
18711         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
18712         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
18713         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
18714         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
18715         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
18716
18717 2004-06-15  Jackson Harper  <jackson@ximian.com>
18718
18719         * assembly.c: Make locales lower case when searching the GAC for
18720         assemblies. gacutil will always make locales lowercase when
18721         installing so this effectively makes them case insensitive.
18722         
18723 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
18724
18725         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
18726         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
18727           parameter which allows to choose whether the wait can be interrupted or 
18728           not. Also added the method mono_monitor_enter(), which locks the monitor
18729           using an infinite wait and without allowing interruption.
18730           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
18731           interrupted.
18732         * object.h: Added new fields in MonoThread. suspend_event holds the event
18733           used to susped/resume the thread. synch_lock is the lock object to use for
18734           modifying the thread state.
18735         * threads.c: Use the new synch_lock object for locking, instead of "this",
18736           which can generate deadlocks.
18737           Moved thread state change in Thread.Sleep and Thread.Join from managed
18738           to unmanaged code. This avoids a deadlock when the thread was suspended
18739           just after acquiring the thread lock.
18740           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
18741           Implemented Thread.Suspend using an event instead of ThreadSuspend,
18742           which is not fully implemented in the io-layer.
18743         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
18744
18745 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
18746
18747         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
18748         threads-types.h: more API cleanups.
18749
18750 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18751
18752         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
18753         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
18754         threadpool.c, threads.c: first pass at the exported API cleanup.
18755
18756 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18757
18758         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
18759
18760 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18761
18762         * icall.c: added internalGetHome.
18763
18764 2004-06-14  Dick Porter  <dick@ximian.com>
18765
18766         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
18767         possible to return successfully when '.' or '..' were the only
18768         entries in a directory, but were skipped.  The MonoIOStat was not
18769         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
18770         Fixes bug 59574.
18771
18772 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18773
18774         * reflection.c: make binaries run on .Net 1.1 by default.
18775
18776 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18777
18778         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
18779
18780 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
18781
18782         * marshal.c: keep track of struct size with explicit layout
18783         (bug #59979).
18784
18785 2004-06-12  Martin Baulig  <martin@ximian.com>
18786
18787         * mono-debug-debugger.c: Comment out a debugging g_message().
18788
18789 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
18790
18791         * reflection.c, reflection.h: do not free custom attrs that are cached.
18792         * icall.c: use braces to make code clearer.
18793
18794 2004-06-11  Martin Baulig  <martin@ximian.com>
18795
18796         * class.h (MonoInflatedField): New type.
18797         (MonoClassField): Replaced `MonoType *generic_type' with
18798         `MonoInflatedField *generic_info'.
18799
18800         * icall.c
18801         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
18802
18803 2004-06-11  Martin Baulig  <martin@ximian.com>
18804
18805         * reflection.c (mono_image_create_method_token): Correctly encode
18806         varargs methods.
18807
18808 2004-06-11  Martin Baulig  <martin@ximian.com>
18809
18810         * metadata.c (mono_metadata_parse_method_signature): When parsing
18811         a MethodDef which has VarArgs, also set sentinelpos if we don't
18812         have any parameters.
18813
18814 2004-06-11  Martin Baulig  <martin@ximian.com>
18815
18816         * verify.c (mono_method_verify): In CEE_CALL, use
18817         mono_method_get_signature() to get the method's signature, unless
18818         we're a PInvoke method.
18819
18820 2004-06-10  Jackson Harper  <jackson@ximian.com>
18821
18822         * assembly.c: Use <path>/lib/mono/gac for the extra paths
18823         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
18824         logical name as the supplied path is just a prefix to the gac not
18825         the direct path to it.
18826         
18827 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
18828
18829         * reflection.c: make the token for a created method match
18830         the token of the MethodBuilder it was created from
18831         (IKVM requires this behaviour now).
18832
18833 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
18834
18835         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
18836         reflection.c, socket-io.c: leak fixes.
18837
18838 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
18839
18840         * icall.c: handle sentinel pos in vararg methods in position different
18841         from 0.
18842
18843 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18844
18845         * culture-info-tables.h: freshly generated.
18846
18847 2004-06-09  Martin Baulig  <martin@ximian.com>
18848
18849         * loader.c (mono_get_method_constrained): Call `mono_class_init
18850         (constrained_class)'.   
18851
18852 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
18853
18854         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
18855         any methods. Fixes #59629.
18856
18857 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18858
18859         * culture-info-tables.h: reflecting locale-builder updates.
18860
18861 2004-06-08  Dick Porter  <dick@ximian.com>
18862
18863         * object.h:
18864         * locales.c: Fixed compile warnings, including a real bug in
18865         CompareInfo_internal_compare.
18866         
18867 2004-06-08  Dick Porter  <dick@ximian.com>
18868
18869         * locales.c
18870         (ves_icall_System_Globalization_CompareInfo_internal_index):
18871         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
18872         Double-check the resuls of usearches, because ICU currently
18873         ignores most of the collator settings here.  Fixes bug 59720.
18874         
18875 2004-06-08  Dick Porter  <dick@ximian.com>
18876
18877         * locales.c
18878         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
18879         Fix memory leak and segfault-causing typo.  No idea how this one
18880         lasted so long without being noticed.
18881
18882 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
18883
18884         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
18885         any methods. Fixes #59629.
18886
18887 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18888
18889         * assembly.c:
18890         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
18891         own the critical section before). Removed dead code (that's done
18892         in the preload hook).
18893
18894         (mono_assembly_load_with_partial_name): call the preload hook.
18895
18896 2004-06-08  Martin Baulig  <martin@ximian.com>
18897
18898         * metadata.c (mono_metadata_signature_alloc): Default
18899         `sentinelpos' to -1.
18900
18901         * reflection.c (mono_image_get_array_token): Likewise.
18902
18903 2004-06-08  Martin Baulig  <martin@ximian.com>
18904
18905         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
18906
18907         * metadata.c (mono_metadata_parse_method_signature): When parsing
18908         a MethodDef which has VarArgs, set sentinelpos.
18909
18910         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
18911         `gint16' since we're using -1 for non-varargs methods.
18912
18913         * reflection.c
18914         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
18915         (method_encode_signature): Added varargs support.
18916         (method_builder_encode_signature): Likewise.
18917         (mono_image_get_varargs_method_token): New static method.
18918         (mono_image_create_method_token): New public method; this is
18919         called via an icall instead of mono_image_create_token() when
18920         calling a varargs method.       
18921
18922 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
18923
18924         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
18925
18926 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18927
18928         * culture-info-tables.h : Reflecting the latest locale-builder that
18929           fixed empty array representation ({} to {0}).
18930
18931 2004-06-07  Jackson Harper  <jackson@ximian.com>
18932
18933         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
18934         looking up extra gac paths. This allows MONO_GAC_PATH to act
18935         exactly like a prefix.
18936         
18937 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
18938
18939         * reflection.c (mono_reflection_type_from_name): Make a copy of the
18940         type name before modifying it. Fixes #59405.
18941
18942 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
18943
18944         * culture-info.h: added fields for "all datetime patterns".
18945         * locales.c: (  ves_icall_System_Globalization_CultureInfo
18946           _construct_datetime_format ()): fill xxx_patterns fields.
18947         * object.h: added fields for "all datetime patterns" to
18948           MonoDateTimeFormatInfo.
18949         * culture-info-tables.h: reflecting locale-builder updates.
18950
18951 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
18952
18953         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
18954         the event has no add and remove methods. Fixes #59629.
18955
18956 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
18957
18958         * object.c: Fixed possible integer overflow when allocating large
18959         strings.
18960
18961 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
18962
18963         * culture-info-tables.h: reflecting locale-builder updates.
18964
18965 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
18966
18967         * culture-info-tables.h: reflecting locale-builder updates.
18968
18969 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
18970
18971         * culture-info-tables.h: reflecting locale-builder updates.
18972
18973 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
18974
18975         * threads.c: Made Thread.Sleep abortable.
18976
18977 2004-06-02  Martin Baulig  <martin@ximian.com>
18978
18979         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
18980
18981         * debug-mono-symfile.h: Bumped symbol file version number to 37.
18982
18983 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
18986
18987 2004-05-30  Jackson Harper  <jackson@ximian.com>
18988
18989         * reflection.c: Do not hardcode assembly versions or public key
18990         tokens anymore. All of this except the corlib section was dead
18991         code anyways.
18992         
18993 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
18994
18995         * object.c (mono_runtime_invoke_array): Automatically create boxed
18996         objects for byref valuetypes if needed. Fixes #59300.
18997         
18998         * object.c (mono_method_return_message_restore): Handle 
18999         MONO_TYPE_OBJECT as well.
19000
19001 2004-05-28  Jackson Harper  <jackson@ximian.com>
19002
19003         * reflection.c: The modified type encoding was causing build
19004         problems. Reverted for now.
19005         
19006 2004-05-28  Jackson Harper  <jackson@ximian.com>
19007
19008         * reflection.c/h: Take an assembly ref so that we dont create
19009         fully qualified names when encoding types in the same assembly as
19010         the custom attribute being emitted.
19011         * appdomain.c: Increment version number.
19012         
19013 2004-05-26  Duncan Mak  <duncan@ximian.com>
19014
19015         * icall.c
19016         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
19017         Set the full version number (major, minor, build, revision).
19018
19019 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
19020
19021         * marshal.c (emit_struct_conv): increment src/dst after blit
19022         (mono_marshal_get_managed_wrapper,
19023         mono_marshal_get_native_wrapper): make sure we have marshalling
19024         info before marshalling params (info computation affects
19025         blittable)
19026
19027         * class.c (class_compute_field_layout): correctly deal with
19028         blittable
19029         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
19030         value types (as per what windows dows by default)
19031         (mono_class_setup_mono_type): System.ValueType is blittable
19032         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
19033         blittable
19034
19035         * marshal.c (mono_marshal_load_type_info): flag types  as
19036         non-blittable if the native layout doesn't match the managed
19037         layout
19038
19039 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19040
19041         * appdomain.c: don't add stuff in the private search path that is
19042         above the application base. If application base is not set, there's
19043         no private search path.
19044
19045 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19046
19047         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
19048         byref struct arguments in native->managed marshalling.
19049
19050 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
19051
19052         * marshal.c (mono_marshal_get_runtime_invoke): correctly
19053         cache methods using signature (special case for methods
19054         that are value type or string class)
19055         
19056         * image.c (mono_image_close): clean up allocated GSList's
19057         in runtime_invoke_cache.
19058
19059 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19060
19061         * mono-config.c: set the correct path for mono_cfg_dir on windows when
19062         there's no MONO_CFG_DIR environment variable defined.
19063
19064 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19065
19066         * threads.c: windows version must be >= 0x0500 to include OpenThread.
19067
19068 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
19069
19070         * threadpool.c: Really wait for 500ms after the async call, even if the wait
19071           is interrumped.
19072         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
19073           before waiting for it, and call CloseHandle after the wait to unref it.
19074           This will make sure that handles are not disposed too early.
19075
19076 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19077
19078         * appdomain.c:
19079         * appdomain.h:
19080         * icall.c: removed
19081         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
19082         needed now.
19083
19084         * object.c: se the application_base only for the domain that runs
19085         Main. Fixes bug #59216,
19086
19087 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19088
19089         * appdomain.c:
19090         * object.c: only the domain in which Main is run have
19091         SetupInformation.ConfigurationFile set, so moved a few lines from
19092         appdomain.c to object.c.
19093
19094 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19095
19096         * appdomain.c: we tried to load [name].(dll|exe), but according
19097         to bug #57710, we must also try [culture]/[name].(dll|exe) and
19098         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
19099         There's a test case attached to bug #58922.
19100
19101 2004-05-27  Dick Porter  <dick@ximian.com>
19102
19103         * icall.c:
19104         * file-io.c: Implemented icalls for locking and unlocking regions
19105         in a file.
19106         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
19107         FALSE on error (fixes both compiler warning and real bug.)
19108
19109 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
19110
19111         * culture-info-tables.h: reflecting locale-builder updates.
19112
19113           (Added missing ChangeLog entry for 05/26)
19114
19115 2004-05-27  Jackson Harper  <jackson@ximian.com>
19116
19117         * locales.c: Fix some cut and paste errors.
19118         
19119 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19120
19121         * mono-config.c: set the correct path for config. directory on windows.
19122
19123 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
19124
19125         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
19126           on win32.
19127
19128 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
19131         from pinvoke functions.
19132         
19133         * marshal.c (mono_ftnptr_to_delegate): Implement this.
19134
19135 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
19136
19137         * culture-info-tables.h: reflecting locale-builder updates.
19138
19139 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19140
19141         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
19142         #59086.
19143
19144 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
19145
19146         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
19147         * icall.c: Modified icalls for RNG.
19148         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
19149         Windows (CryptoAPI).
19150
19151 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19152
19153         * locales.c: Fix build.
19154
19155 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
19156
19157         * culture-info-tables.h: reflecting locale-builder updates.
19158
19159 2004-05-25  Jackson Harper  <jackson@ximian.com>
19160
19161         * locales.c: When creating the current culture use the $LANGs
19162         specific culture. So DateTimeFormat and NumberFormat entries are created.
19163         
19164 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19165
19166         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
19167         a char array as parameter.
19168
19169 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
19170
19171         * image.c: In mono_image_open(), always use an absolute path name to
19172           look for already loaded images.
19173
19174 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
19175
19176         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
19177         missing in the windows build (like older cygwin include files).
19178
19179 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
19180
19181         * icall.c: Fixed check for possible integer overflow in Buffer_
19182         BlockCopy icall. Replaced comments style // by /* */.
19183
19184 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19185
19186         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
19187         
19188         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
19189         check after MONO_VTADDR. Fixes pinvoke2.exe.
19190
19191         * marshal.h marshal.c metadata.h: Add beginnings of support for
19192         ftnptr -> delegate marshalling.
19193
19194 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19195
19196         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
19197         * threads.c: Fix warnings.
19198
19199 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19200
19201         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
19202         * icall.c: Registered icalls for Suspend and Resume.
19203         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
19204           Thread.Abort.
19205         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
19206         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
19207         * process.c: Use WaitForSingleObjectEx.
19208         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
19209           checkpoints.
19210         * threads.c, threads.h: Make use of new Ex wait methods. Improved
19211           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
19212           for Suspend and Resume. Added new mono_thread_stop, used for stoping
19213           background threads. Added basic support for Abort in Windows.
19214           Start new threads using a managed delegate invoke wrapper. This wrapper
19215           has an interruption checkpoint that is needed since an interruption
19216           can be requested before the thread leaves the unmanaged code that starts 
19217           the thread.
19218         * marshal.c: Added interruption checkpoint after every native call, and
19219           also before managed calls for wrappers called from unmanaged code to
19220           go into managed code.
19221         * object.h: Added new field in MonoThread to keep track of interruption
19222           requests.
19223
19224 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
19227         calls.
19228
19229 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19230
19231         * appdomain.c:
19232         * assembly.c:
19233         * gc.c:
19234         * locales.c:
19235         * mono-config.c:
19236         * rand.c: getenv -> g_getenv (windows!)
19237
19238         * process.c: complete_path is also used on non-windows platforms.
19239
19240 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19241
19242         * icall.c: new signature for Process_Start.
19243
19244         * process.[ch]: new signature for Process_Start. If we're on windows
19245         and UseShellExecute is false, we have to search for the program by
19246         ourselves if we don't get a full path.
19247
19248 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19249
19250         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
19251         marshalling and call CleanUpNativeData if needed. Fixes #58646.
19252
19253 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19254
19255         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
19256         Fixes bug #58373.
19257
19258 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19259
19260         * process.c: use double quotes to quote program name and arguments on
19261         windows. Fixes bug #58575.
19262
19263 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19264
19265         * file-io.c: don't return "." and ".." when using windows Find*File.
19266
19267 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
19268
19269         * marshal.c: Don't pass wrappers to message init because method 
19270         addressed used to lookup metadata. part of remoting[2|3] fix.
19271
19272 2004-05-15  Jackson Harper  <jackson@ximian.com>
19273
19274         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
19275         path is essentially the same as MONO_PATH except that it points to
19276         GACs instead of lib directories.
19277         * loader.h: The user gac is gone so we dont need function to
19278         enable/disable it.
19279         * mono-config.c: user gac option is now gone.
19280         
19281 2004-05-15  Jackson Harper  <jackson@ximian.com>
19282
19283         * culture-info.h: Make defines more consistent, add calendar data
19284         to the culture info table.
19285         * culture-info-tables.h: Add basic calendar data. Basically
19286         everyone gets default gregorian until all the data is
19287         updated.
19288         * locales.c: Use the new consistent defines. Set calendar data for
19289         culture info objects.
19290         * object.h: add a field for calendar data to CultureInfo
19291         
19292 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
19293
19294         * image.c: image->runtime_invoke_cache is keyed on signatures now.
19295         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
19296         a signature.
19297         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
19298         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
19299         an extra param that is the pointer of the method to invoke. The IL for
19300         the invoke method is no longer specific to the method, but to the
19301         signature of the method. Thus, we can share the same code for multiple
19302         methods. This reduces the number of methods that have to be compiled.
19303
19304 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
19307
19308         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19309
19310         * icall.c: Optimize Buffer.BlockCopy.
19311
19312 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19313
19314         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
19315         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
19316         quote). Changed them to "MMMM yyyy".
19317
19318 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
19319
19320         * rand.c
19321         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
19322
19323 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
19324
19325         * reflection.h: Updated after changes to managed structures.
19326
19327         * appdomain.c: Bump corlib version.
19328
19329 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19330
19331         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
19332         windows.
19333
19334 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19335
19336         * Makefile.am: link to ../os/libmonoos.la on windows.
19337
19338         * assembly.c:
19339                 -If MONO_DEBUG, warn about non-existing directories in
19340                 MONO_PATH.
19341                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
19342                 compile time variable.
19343                 -Removed init_default_path and call mono_set_rootdir from
19344                 libmonoos.a instead (windows only).
19345
19346         * assembly.h: declare mono_assembly_getrootdir().
19347
19348         * domain.c:
19349         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
19350
19351         * loader.c: s/getenv/g_getenv/
19352
19353 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
19356
19357         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
19358
19359         * metadata.h: Add new marshalling conversions.
19360
19361         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
19362         function.
19363
19364         * reflection.c (mono_reflection_get_type): Lookup the type in all
19365         modules of a multi-module assembly. Fixes #58291.
19366
19367 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
19368
19369         * threads.c: Before aborting a background, set the StopRequested
19370         state.  This avoids throwing the Abort exception.
19371         In mono_thread_manage, don't continue with the shutdown until all
19372         aborted threads have actually stopped.
19373
19374 2004-05-10  Jackson Harper  <jackson@ximian.com>
19375
19376         * locales.c: Remove the modifier from culture names.
19377         
19378 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19379
19380         * Makefile.am: monosn is not installed any more. It has been deprecated
19381         in favor of sn.
19382
19383 2004-05-07  Jackson Harper  <jackson@ximian.com>
19384
19385         * locales.c
19386         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
19387         Fix array construction, add bailout if the length is 0.
19388
19389 2004-05-07  Dick Porter  <dick@ximian.com>
19390
19391         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
19392         machine doesn't have a DNS entry.  Patch by Urs Muff
19393         (umuff@quark.com), fixes bug 57928.
19394
19395 2004-05-06  Jackson Harper  <jackson@ximian.com>
19396
19397         * reflection.c: Handle null PublicTokens properly. alloc mem for
19398         assembly names culture so we dont crash when freeing it.
19399         
19400 2004-05-06  Jackson Harper  <jackson@ximian.com>
19401
19402         * assembly.c: Check the usergac when loading with partial names.
19403         
19404 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
19405
19406         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
19407         does nothing for now (not required for Linux/Windows) but the class
19408         library can call it (and a newer or modified runtime could need it).
19409         * icall.c: Registred icall.
19410
19411 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19412
19413         * loader.c: prints a message on module loading error we set MONO_DEBUG
19414         environment variable.
19415
19416 2004-05-05  Jackson Harper  <jackson@ximian.com>
19417
19418         * appdomain.c: Handle PublicKeyToken=null properly.
19419         
19420 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
19421
19422         * environment.c|h: Added icall ves_icall_System_Environment_
19423         GetOSVersionString to get the current OS version as a string.
19424         * icall.c: Registred icall.
19425
19426 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
19427
19428         * object.c: in mono_object_get_virtual_method(), take into account that
19429         non-virtual methods don't have a slot in the vtable. Check needed when
19430         the object is a proxy.
19431
19432 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
19433
19434         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
19435         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
19436
19437         * object.c (mono_class_compute_gc_descriptor): Fix warning.
19438
19439         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
19440         passed when a valuetype is expected.
19441
19442         * object.c (mono_unhandled_exception): Only set the exit code if the
19443         exception happens in the main thread. Fixes thread5.exe.
19444
19445         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
19446         invalid names. Fixes #58047.
19447
19448 2004-05-03  Jackson Harper  <jackson@ximian.com>
19449
19450         * assembly.c: This line was committed accidently and is unneeded.
19451         
19452 2004-05-03  Jackson Harper  <jackson@ximian.com>
19453
19454         * icall.c: Add new icall for Assembly::LoadWithPartialName
19455         * assembly.c/.h: new function that probes the GAC to load partial
19456         assembly names by Paolo Molaro.
19457         
19458 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19459
19460         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
19461         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
19462         (type_get_fully_qualified_name): Added PublicKeyToken when building a
19463         full type name.
19464
19465 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19466
19467         * appdomain.c: fixed check for 'neutral' culture and removed warning.
19468         * reflection.c: fix bug when parsing a full type name and Version is not
19469         the last thing in the string.
19470
19471 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
19472
19473         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
19474         crashes when it is freed.
19475
19476 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19477
19478         * assembly.c: print the compat warning to stderr.
19479
19480 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
19481
19482         * assembly.c (mono_assembly_load_references): Add a compatibility
19483         hack to run old applications that might be still referencing the
19484         3300-based assemblies, only do this for System.xxx.
19485
19486 2004-05-01  Jackson Harper  <jackson@ximian.com>
19487
19488         * appdomain.c: If the culture is neutral we set it to "".
19489         
19490 2004-04-29  Jackson Harper  <jackson@ximian.com>
19491
19492         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
19493
19494 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
19495  
19496         * string-icalls.c: added low overhead function for copying chars
19497         * icall.c: added needed icall for the above function
19498  
19499 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19500
19501         * icall.c: fix return value of get_global_assembly_cache.  Implemented
19502         Environment.GetLogicalDrives.
19503
19504 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
19505
19506         * rand.c: try and talk to egd or prngd
19507         for random bytes if opening devices fail.
19508
19509 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
19510
19511         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
19512         alignment for the type using the native alignment of its members 
19513         instead of using klass->min_align.
19514
19515         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
19516
19517 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19518
19519         * file-io.c:
19520         * socket-io.c: added check for sys/aio.h.
19521
19522 2004-04-28  Dick Porter  <dick@ximian.com>
19523
19524         * threads.c: Don't abort a thread thats already aborting, when
19525         terminating everything.
19526
19527 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19528
19529         * icall.c: added 2 new async calls for Socket.
19530
19531         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
19532         IO on *nix systems.
19533
19534         * threadpool.c: removed unused variable.
19535
19536 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
19537
19538         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
19539
19540 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
19541
19542         * locales.c: put back string_invariant_tolower () and
19543         string_invariant_toupper ().
19544
19545 2004-04-26 David Waite <mass@akuma.org>
19546
19547         * file-io.h:
19548         * socket-io.h:
19549         * threads.h:
19550         * unicode.h: remove comma from end of enumeration declarations
19551
19552 2004-04-26 David Waite <mass@akuma.org>
19553
19554         * debug-mono-symfile.h:
19555         * decimal.c:
19556         * mono_debug.h:
19557         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
19558
19559
19560 2004-04-26  Jackson Harper  <jackson@ximian.com>
19561
19562         * appdomain.c: Increment version number.
19563         
19564 2004-04-26  Jackson Harper  <jackson@ximian.com>
19565
19566         * appdomain.c: Set assembly references public token value when
19567         PublicKeyToken is specified, not the hash_value. Free public token
19568         values when free assembly name data. Previously the public key
19569         token was hex decoded, however we are using hex encoded public key
19570         tokens, so this is not neccasary.
19571         * assembly.c: Lookup assemblies in the gac if their public token
19572         value is set. Add function to allow enabling user gac
19573         lookups. Specify whether or not the assembly was loaded from the
19574         GAC. Compare full assembly names when checking the cache for
19575         assemblies (Temporarily disabled see comment in code). Remove
19576         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
19577         specifies trace-loader they get extra info to stdout on the
19578         loading of assemblies.
19579         * image.h: Add a field for an assembly references public token
19580         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
19581         whether an assembly has been loaded from the GAC.
19582         * image.c: Remove a corlib -> mscorlib name mapping.
19583         * loader.h: Add function to enable/disable the user gac.
19584         * mono-config.c: Check if the usergac is enabled in the config
19585         file.
19586         * icall.c: New icall to determine whether or not an assembly has
19587         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
19588         * tabldefs.h: Add constant for assemblyref flag that specifies a
19589         full public key is used instead of a public token.
19590         * reflection.c: Remove mscorlib -> corlib mappings. Set
19591         PublicTokenValue instead of hash value. This value is a hex
19592         string so it does not need to be expanded.
19593
19594 2004-04-26  Martin Baulig  <martin@ximian.com>
19595
19596         * mono-debug-debugger.c (mono_debugger_initialize): Set
19597         `mono_debugger_initialized' before calling mono_debug_lock().
19598
19599 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
19600
19601         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
19602           InternalToUpper/InternalToLower.
19603         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
19604           removed invariant culture shortcut.  This is now done in managed code.
19605         * locales.c: (string_invariant_toupper/tolower) removed.
19606
19607 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19608
19609         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
19610         Added Poll internal call.
19611
19612         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
19613         call for Poll. Select was too heavy for polling a single socket.
19614
19615         * threadpool.[ch]: added mono_threadpool_cleanup.
19616         * threads.c: use it. Don't use Thread_Abort on windows.
19617
19618 2004-04-23  Martin Baulig  <martin@ximian.com>
19619
19620         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
19621
19622 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
19623
19624         * icall.c: Registred new icalls for key pair protection and added an
19625         icall for Environment.GetFolderPath on Windows.
19626         * security.c|h: Added new icalls for key pair protection.
19627
19628 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19629
19630         * socket-io.c: don't display the non-supported family warning for known
19631         families. Now this is not displayed on windows when checking support
19632         for IPv4/IPv6.
19633
19634 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19635
19636         * class.c: don't display the layout warning for static fields.
19637
19638 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
19639
19640         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
19641         * locales.c, locales.h: Added new icalls for culture-specific
19642         Char.ToLower and Char.ToUpper.
19643
19644 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19645
19646         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
19647         by David Waite.
19648
19649 2004-04-20  Martin Baulig  <martin@ximian.com>
19650
19651         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
19652         of the type name before passing it to mono_reflection_type_from_name().
19653
19654 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19655
19656         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
19657         encodings here. Fixes #56965.
19658
19659 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
19660
19661         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
19662         fix test on strstr result not that I can see anything that
19663         relies on the result.
19664
19665 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
19668         Fixes #57081.
19669
19670         * marshal.c (mono_marshal_get_string_encoding): New helper function.
19671
19672         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
19673         function to determine which marshalling to use for strings. Fixes
19674         #56965.
19675
19676         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
19677
19678         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
19679
19680 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
19681
19682         * icall.c: #include mono-config.h
19683
19684 2004-04-15  Jackson Harper  <jackson@ximian.com>
19685
19686         * culture-info-tables.h: Fix date formats for en-US culture.
19687         
19688 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
19689
19690         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
19691         ThreadPool.SetMinThreads.
19692         * threadpool.c: Implemented ThreadPool.GetMinThreads and
19693         ThreadPool.SetMinThreads.
19694
19695 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19696
19697         * mono-config.c: also load the .config file in the directory
19698         where the assembly was found.
19699
19700 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
19701
19702         * assembly.c: load per-assembly config files.
19703         * icall.c: decrapified code to get the config dir and moved to
19704         mono-config.c.
19705         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
19706         per-assembly config files. When doing a dll map lookup give precedence
19707         to the per-assembly data.
19708
19709 2004-04-14  Martin Baulig  <martin@ximian.com>
19710
19711         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
19712         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
19713         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
19714
19715         * mono-debugger-debugger.c: While the debugger is locked, remember
19716         whether the symbol tables have changes and send one single
19717         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
19718
19719 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
19722
19723         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
19724         function.
19725
19726         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
19727         account when marshalling string arrays. Fixes #56965.
19728
19729 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
19730
19731         * icall.c: Add new icalls mapping for security.
19732         * security.c|h: Add internal calls for WindowsIdentity,
19733         WindowsImpersonationContext and WindowsPrincipal.
19734
19735 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
19736
19737         * class.c: Added comment to ensure the System.MonoDummy class
19738         is removed when no longer necessary
19739
19740 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19741
19742         * appdomain.c: Pass arguments to the bootstraping exceptions to
19743         minimize JITed methods at boot
19744
19745         * metadata.c (mono_exception_from_name_two_strings): Allow for the
19746         second string to be null.
19747
19748         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
19749         Change the protocol to minimize the JIT methods at startup.  Now
19750         it Returns the internal codepage, if the value of "int_code_page"
19751         is 1 at entry, and we can not compute a suitable code page
19752         number, returns the code page as a string.
19753
19754 2004-04-13  Jackson Harper  <jackson@ximian.com>
19755
19756         * culture-info-tables.h: Fix number of decimal digits for all
19757         english locales.
19758
19759 2004-04-13  Jackson Harper  <jackson@ximian.com>
19760
19761         * icall.c: Clairfy out of sync error message. It is not always
19762         your corlib that is out of sync.
19763
19764 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
19765
19766         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
19767         properties when only the set accessor is overriden. Fixes #55874.
19768
19769 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
19770
19771         * assembly.c (mono_assembly_load_references): Make this thread safe.
19772         Fixes #56327.
19773
19774 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19775
19776         * monosn.c: Add missing initialization calls.
19777
19778 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
19779
19780         * locales.c:
19781         ves_icall_System_Globalization_CultureInfo_construct_number_format
19782         Fix g_assert so it compiles on fussier compilers re int/ptr
19783         mismatch
19784
19785 2004-04-08  Dick Porter  <dick@ximian.com>
19786
19787         * socket-io.h:
19788         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
19789         53992.  Also rearrange the code so that the internal calls return
19790         an error value and exceptions are thrown from managed code.
19791
19792         * icall.c: Add type info to the socket icalls.
19793
19794 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19795
19796         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
19797         owes me a beer.
19798
19799 2004-04-07  Martin Baulig  <martin@ximian.com>
19800
19801         * class.c (mono_class_from_generic_parameter): Don't default
19802         `klass->parent' to `mono_defaults.object_type'.
19803
19804 2004-04-07  Martin Baulig  <martin@ximian.com>
19805
19806         * reflection.c (mono_reflection_initialize_generic_parameter): Set
19807         `param->pklass->reflection_info'.       
19808
19809 2004-04-07  Jackson Harper  <jackson@ximian.com>
19810
19811         * culture-info-tables.h: Fix date separator symbol.
19812         
19813 2004-04-07  Martin Baulig  <martin@ximian.com>
19814
19815         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
19816         from System.Type to System.MonoType.
19817
19818 2004-04-07  Martin Baulig  <martin@ximian.com>
19819
19820         * reflection.h
19821         (MonoReflectionGenericParam): Added `has_reference_type' and
19822         `has_value_type' fields.
19823
19824         * reflection.c (mono_image_get_generic_param_info): Encode the
19825         correct flags if we have the `class' or `struct' constraint.
19826
19827 2004-04-07  Martin Baulig  <martin@ximian.com>
19828
19829         * reflection.h
19830         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
19831
19832 2004-04-07  Jackson Harper  <jackson@ximian.com>
19833
19834         * appdomain.c: Revert extra patches, just wanted to bump the
19835         version number.
19836         
19837 2004-04-07  Jackson Harper  <jackson@ximian.com>
19838
19839         * Makefile.am: Add culture-info private headers.
19840         * icall.c: Add new icalls for contructing locales.
19841         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
19842         * locales.h: Declare new culture info construction methods.
19843         * object.h: Add new fields used to avoid the CultureMap to
19844         MonoCultureInfo.
19845         * culture-info.h: Definition of structs used in the culture info
19846         tables.
19847         * culture-info-tables.h: Autogenerated tables that contain culture
19848         info data. This file was generated with the locale-builder tool.
19849         * appdomain.c: Incement corlib version number.
19850         
19851 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
19852
19853         * appdomain.c: (mono_runtime_init) move mono_thread_init
19854         to before mono_object_new calls so critical sections
19855         are initialized before use.
19856
19857 2004-04-07  Martin Baulig  <martin@ximian.com>
19858
19859         * icall.c
19860         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
19861         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
19862         (ves_icall_MonoGenericParam_initialize): Removed.
19863         (monogenericparam_icalls): Removed.
19864         (generictypeparambuilder_icalls): Added new table for
19865         System.Reflection.Emit.GenericTypeParameterBuilder.
19866
19867         * reflection.c
19868         (mono_reflection_define_generic_parameter): Removed.
19869         (mono_reflection_initialize_generic_parameter): This is now called
19870         from GenericTypeParameterBuilder's .ctor.
19871
19872 2004-04-06  Martin Baulig  <martin@ximian.com>
19873
19874         * class.c (mono_class_init): Don't inflate nested classes in a
19875         generic instance.
19876         (mono_type_get_name_recurse): Include the generic arguments for
19877         generic instances and generic type declarations.
19878         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
19879         (_mono_class_get_instantiation_name): Removed.
19880         (mono_class_create_generic): Always use `gklass->name' as our name.
19881
19882         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
19883
19884         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
19885         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
19886         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
19887         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
19888         closed generic methods here.
19889
19890         * reflection.c
19891         (mono_reflection_generic_inst_get_nested_types): Removed.
19892         (inflate_mono_method): Copy the generic parameters from the
19893         MonoMethodHeader into out MonoGenericMethod.
19894
19895 2004-04-06  Martin Baulig  <martin@ximian.com>
19896
19897         * row-indexes.h
19898         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
19899
19900         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
19901
19902         * reflection.c (build_compressed_metadata): If we have any entries
19903         in the GenericParam, MethodSpec or GenericParamConstraint tables,
19904         set the header version to 1.1.
19905
19906 2004-04-06  Martin Baulig  <martin@ximian.com>
19907
19908         * class.c (mono_class_init): If we're a generic instance,
19909         initialize our nested classes, too.
19910         (_mono_class_get_instantiation_name): Deal with the new `!%d'
19911         suffix. 
19912
19913 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19914
19915         * process.c: quote the argument passed to the shell on windows.
19916
19917 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * threads.c (mono_alloc_special_static_data): Allow this to be
19920         called during startup.
19921
19922 2004-04-02  Martin Baulig  <martin@ximian.com>
19923
19924         * icall.c
19925         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
19926
19927 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * icall.c: Fix build.
19930
19931 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
19932
19933         * Makefile.am: Added security.c|h.
19934         * icall.c: Added icall for get_UserName;
19935         * security.c: New file for security related icalls. Added function
19936         get_UserName for System.Environment (fix #56144).
19937         * security.h: New. Header file for security.c
19938
19939 2004-04-02  Dick Porter  <dick@ximian.com>
19940
19941         * icall.c: Deleted the icalls that were obsoleted some time ago
19942         by the ICU string code, and which were mixed into the icall
19943         rearranging.  Fixes bug 55969.
19944
19945         * string-icalls.h: 
19946         * string-icalls.c: Deleted the code that those icalls reference.
19947
19948 2004-04-01  Martin Baulig  <martin@ximian.com>
19949
19950         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
19951
19952         * class.c (mono_class_from_generic_parameter): Don't set 
19953         TYPE_ATTRIBUTE_INTERFACE.
19954         (my_mono_class_from_generic_parameter): Likewise.
19955
19956 2004-04-01  Martin Baulig  <martin@ximian.com>
19957
19958         * loader.c (find_method): Added an optional `MonoClass *ic'
19959         argument to search in a specific interface.
19960         (mono_get_method_constrained): New public function.
19961
19962 2004-04-01  Martin Baulig  <martin@ximian.com>
19963
19964         * reflection.c (mono_image_get_generic_field_token): Use the
19965         `handleref' cache here.
19966
19967 2004-04-01  Martin Baulig  <martin@ximian.com>
19968
19969         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
19970
19971         * reflection.c (create_generic_typespec): Use the `typespec' hash
19972         here, not the `typeref' one.    
19973
19974 2004-04-01  Martin Baulig  <martin@ximian.com>
19975
19976         * class.c (mono_class_inflate_generic_type): Moved the
19977         functionality into a new static inflate_generic_type() which
19978         returns NULL if it didn't do anything.  Only increment the
19979         `mono_stats.inflated_type_count' if we actually inflated
19980         something.
19981         (mono_class_get_full): Check the classes type to see whether we
19982         need to inflate it; also inflate MONO_TYPE_(M)VAR.
19983
19984 2004-04-01  Jackson Harper  <jackson@ximian.com>
19985
19986         * reflection.c: Set culture for assembly references.
19987         
19988 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
19989
19990         * reflection.[ch], icall.[ch], Fix support for pinning variables.
19991
19992 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19993
19994         * assembly.c:
19995         (do_mono_assembly_open): the critical section also covers
19996         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
19997
19998 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19999
20000         * threads.c:
20001         (mono_manage_threads): abort the background threads when finishing.
20002         Fixes bug #47232.
20003
20004 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20005
20006         * gc.c: only close the done_event handle if there was no timeout.
20007         C-ified comments.
20008
20009 2004-03-30  Martin Baulig  <martin@ximian.com>
20010
20011         * icall.c (icall_entries): It's called "System.Activator", not
20012         "System.Activation".    
20013
20014 2004-03-30  Martin Baulig  <martin@ximian.com>
20015
20016         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
20017         (mono_class_create_from_typespec): Likewise.
20018
20019 2004-03-30  Martin Baulig  <martin@ximian.com>
20020
20021         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
20022         `has_ctor_constraint' and `initialized'.
20023
20024 2004-03-30  Martin Baulig  <martin@ximian.com>
20025
20026         * reflection.c (encode_new_constraint): New static function to add
20027         the constructor constraint attribute to a type parameter.
20028         (encode_constraints): Call encode_new_constraint() if necessary.
20029
20030         * reflection.h
20031         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
20032
20033         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
20034         
20035 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
20036
20037         * reflection.c, icall.c: add support for pinning variables. 
20038
20039 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
20040
20041         * marshal.c (mono_marshal_get_managed_wrapper):
20042         init bool local with zero rather than null.
20043
20044 2004-03-29  Martin Baulig  <martin@ximian.com>
20045
20046         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
20047         the "official" behavior here.
20048         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
20049
20050 2004-03-29  Martin Baulig  <martin@ximian.com>
20051
20052         * icall.c: Reflect latest API changes.
20053
20054 2004-03-29  Martin Baulig  <martin@ximian.com>
20055
20056         * loader.c (mono_get_method_from_token): Also call
20057         mono_metadata_load_generic_params () for abstract and interface
20058         methods; replace the type arguments in the method signature with
20059         the ones which are loaded from the metadata.
20060
20061 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
20062
20063         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
20064         of the lock is not the current thread. MS.NET don't do it, in spite of
20065         what the documentation says. See bug #56157.
20066
20067 2004-03-28  Martin Baulig  <martin@ximian.com>
20068
20069         * class.c (mono_class_init): Don't call init_properties() and
20070         init_events() for generic instances; set `prop->parent' when
20071         inflating properties.
20072
20073         * reflection.c (mono_generic_inst_get_object): Call
20074         `mono_class_init (ginst->klass)'.
20075         (mono_type_get_object): Only create a MonoGenericInst if your
20076         generic type is a TypeBuilder.
20077         (do_mono_reflection_bind_generic_parameters): Only set
20078         `ginst->is_dynamic' if our generic type is a TypeBuilder.
20079
20080 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
20083         Fixes #56091.
20084
20085 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20086
20087         * icall.c: added Kill_internal icall.
20088         * process.[ch]: added Kill_internal icall.
20089
20090 2004-03-25  Martin Baulig  <martin@ximian.com>
20091
20092         * class.h (MonoStats): Added `generic_instance_count',
20093         `inflated_method_count', `inflated_type_count' and
20094         `generics_metadata_size'.       
20095
20096 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20097
20098         * reflection.c: no warnings now.
20099
20100 2004-03-25  Martin Baulig  <martin@ximian.com>
20101
20102         * class.c (mono_class_get_full): New public function; does a
20103         mono_class_get(), but also takes a `MonoGenericContext *'.
20104
20105         * loader.c (mono_field_from_memberref): Renamed to
20106         `field_from_memberref', made static and added `MonoGenericContext *'
20107         argument.
20108         (mono_field_from_token): Added `MonoGenericInst *' argument.
20109         (method_from_memberef): Likewise.
20110         (mono_get_method_from_token): Likewise.
20111         (mono_get_method_full): New public function; does a
20112         mono_get_method(), but also takes a `MonoGenericContext *'.
20113
20114         * verify.c (mono_method_verify): Get the method's generic context
20115         and pass it to mono_field_from_token(), mono_get_method_full() and
20116         mono_class_get_full().
20117
20118 2004-03-25  Martin Baulig  <martin@ximian.com>
20119
20120         * class.c (mono_class_inflate_generic_type): Take a
20121         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
20122         `MonoGenericMethod *'.
20123
20124 2004-03-25  Martin Baulig  <martin@ximian.com>
20125
20126         * loader.h (MonoMethodInflated): Store the MonoGenericContext
20127         instead of the MonoGenericMethod here.
20128
20129 2004-03-25  Martin Baulig  <martin@ximian.com>
20130
20131         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
20132         each time we create a new MonoGenericInst, we also create a new
20133         context which points back to us.
20134
20135         * class.c (inflate_method): Use `ginst->context' instead of
20136         creating a new context.
20137
20138         * loader.c (method_from_memberref): Use
20139         `klass->generic_inst->context' instead of creating a new context.
20140
20141 2004-03-25  Martin Baulig  <martin@ximian.com>
20142
20143         * class.h (MonoGenericContext): New struct.
20144         (MonoGenericMethod): Removed `generic_inst'.
20145
20146         * class.c (mono_class_inflate_generic_method): Take a
20147         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
20148
20149 2004-03-25  Martin Baulig  <martin@ximian.com>
20150
20151         * loader.h (MonoMethodInflated): New typedef.
20152
20153         * metadata.h (MonoMethodSignature): Removed `gen_method', make
20154         `generic_param_count' consume just 30 bits, added `is_inflated'
20155         and `has_type_parameters' flags (one bit each).
20156
20157         * class.c (mono_class_inflate_generic_method): Create a
20158         MonoMethodInflated instead of a MonoMethodNormal and set
20159         `is_inflated' in the method signature.
20160
20161         * class.h (MonoGenericMethod): Removed `generic_method'.
20162
20163 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
20164
20165         * image.c: Make sure the name of a MonoImage is always an absolute path.
20166           This fixes bug #54415.
20167
20168 2004-03-24  Martin Baulig  <martin@ximian.com>
20169
20170         * class.c (mono_class_setup_vtable): If we're a generic instance,
20171         use our generic type's vtable size.
20172
20173 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
20176         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
20177         problems.
20178
20179 2004-03-23  Martin Baulig  <martin@ximian.com>
20180
20181         * class.h (MonoDynamicGenericInst): Added `int count_events' and
20182         `MonoEvent *events'.
20183
20184         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
20185         (typebuilder_icalls): Added "get_event_info"; calls
20186         mono_reflection_event_builder_get_event_info(). 
20187
20188         * reflection.c (mono_reflection_generic_inst_initialize): Added
20189         `MonoArray *events'.
20190         (mono_reflection_event_builder_get_event_info): New function.
20191
20192 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
20193
20194         * object.h: add mono_type_initialization_init
20195
20196         * object.c (mono_runtime_class_init): 
20197         implement class constructor synchronization rules
20198         to cope with threading issues.  
20199         add mono_type_initialization_init
20200
20201         * appdomain.c (mono_runtime_init): call 
20202         mono_type_initialization_init
20203
20204         * class.h: removing initializing field from MonoVTable
20205
20206 2004-03-23  Martin Baulig  <martin@ximian.com>
20207
20208         * class.c (my_mono_class_from_generic_parameter): Use
20209         `param->name' if it's not NULL. 
20210
20211 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
20212
20213         * class.c: do not insert non-virtual methods in the vtable.
20214         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
20215         that means the method is non-virtual. This never would have
20216         happened before.
20217
20218 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20219
20220         * profiler.c: Added lock for accessing coverage_hash.
20221
20222 2004-03-22  Martin Baulig  <martin@ximian.com>
20223
20224         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
20225         `method->method->signature->generic_param_count != 0' to make it
20226         work for interface methods.
20227
20228 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20229
20230         * process.c: quote the string passed to the shell using g_shell_quote.
20231
20232 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20233
20234         * threads.c:
20235         (mono_threads_manage): don't remove the finalizer thread and self
20236         from the threads hash table so that mono_thread_manage can be called
20237         more than once.
20238
20239 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20240
20241         * process.c: quote the arguments when UseShellExecute is true. Fixes
20242         bug #55790.
20243
20244 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20245
20246         * threads.c: set mono_thread_detach as a cleanup routine for every
20247         thread. This way it's always executed upon thread termination, either
20248         aborted or finished normally. No more xsp hangs!
20249
20250 2004-03-17  Martin Baulig  <martin@ximian.com>
20251
20252         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
20253         `int count_nested' and a `MonoType **nested'.
20254
20255         * reflection.c (mono_reflection_bind_generic_parameters): Moved
20256         most of the functionality into a new static
20257         do_mono_reflection_bind_generic_parameters() and don't take a
20258         `MonoType *nested_in' argument any more.  Don't compute nested
20259         types here.
20260         (mono_reflection_generic_inst_get_nested_types): New public method
20261         to get nested types.
20262
20263         * class.c (mono_class_create_generic): Set `klass->nested_in' if
20264         we're a nested class.
20265
20266         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
20267         mono_reflection_generic_inst_get_nested_types() to compute the
20268         nested types.
20269
20270 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20271
20272         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
20273         descriptive error message under windows.
20274         
20275 2004-03-17  Martin Baulig  <martin@ximian.com>
20276
20277         * class.c (dup_type): Added `const MonoType *original' argument;
20278         copy the attrs from the original type.
20279
20280 2004-03-17  Martin Baulig  <martin@ximian.com>
20281
20282         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
20283         `m->generic_inst_cache' here.
20284
20285 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20286
20287         * exception.h exception.c: Add stack_overflow_exception.
20288
20289 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20290
20291         * threadpool.c:
20292         (overlapped_callback): call SetEvent *after* invoking the callback.
20293         No need to call CloseHandle.
20294
20295 2004-03-16  Martin Baulig  <martin@ximian.com>
20296
20297         * reflection.c (mono_image_get_fieldref_token): Take a
20298         `MonoReflectionField *' instead of a `MonoClassField *' and a
20299         `MonoClass *'; store the `MonoReflectionField *' in the hash.
20300
20301 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20302
20303         * appdomain.c: don't add the culture to the filename we're looking for
20304         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
20305
20306 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20307
20308         * locales.c: don't ignore symbols when doing case insensitive compares.
20309         Thanks Dick! Fixes bug #54046.
20310
20311         * threads.c: surround 'threads' usage with enter/leave in
20312         mono_thread_manage.
20313
20314 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20315
20316         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
20317         implicitly marshalled as [Out]. Fixes #55450.
20318
20319         (mono_marshal_get_runtime_invoke): Zero out the result if there is
20320         an exception.
20321
20322 2004-03-16  Martin Baulig  <martin@ximian.com>
20323
20324         * class.c (mono_class_from_generic_parameter): Use the actual
20325         parameter name. 
20326
20327 2004-03-16  Martin Baulig  <martin@ximian.com>
20328
20329         * reflection.c (type_get_signature_size): New static function.
20330         Compues the size of the type in a method signature.
20331         (method_get_signature_size): New static function; calls
20332         type_get_signature_size() to compute the actual size of the
20333         method's signature.
20334         (method_encode_signature): Use method_get_signature_size() to get
20335         the signature's size rather than using `nparams * 10'.
20336
20337 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20338
20339         * file-io.h: define here WapiOverlapped on windows. I don't want the
20340         regular OVERLAPPED one.
20341
20342         * file-io.c:
20343         * threadpool.c: somehow, BindIoCompletionCallback is not found.
20344         Disabling AIO on windows.
20345
20346 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20347
20348         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
20349         bug #55385.
20350
20351 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20352
20353         * appdomain.c: upgraded corlib version.
20354
20355         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
20356         and BeginWrite. Allow opening files for asynchrnous operations.
20357
20358         * file-io.h: new struct that maps FileStreamAsyncResult.
20359         * icall.c: added new icalls.
20360         * process.[ch]: support setting child process environment variables
20361         and use the SHELL or COMSPEC when UseShellExecute is true.
20362
20363         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
20364         callback for async. IO is here and also BindHandle.
20365
20366         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
20367         from here.
20368
20369 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20370
20371         * reflection.c (create_custom_attr): Allow len == 0.
20372
20373         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
20374         computation on big-endian machines.
20375
20376 2004-03-13  Martin Baulig  <martin@ximian.com>
20377
20378         * class.h (MonoGenericInst): Added `int count_ifaces'.
20379
20380         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
20381         `ginst->count_ifaces' instead `klass->interface_count' since we
20382         may get called before the vtable is created.
20383
20384         * loader.c (mono_method_get_param_names): If we're a generic
20385         instance, return and don't initialize the class.
20386
20387         * reflection.c (mono_reflection_setup_generic_class): Don't call
20388         ensure_runtime_vtable().
20389         (mono_reflection_bind_generic_parameters): Set
20390         `ginst->count_ifaces'.
20391
20392 2004-03-11  Jackson Harper <jackson@ximian.com>
20393
20394         * icall.c:
20395         * unicode.c:
20396         * unicode.h: Remove unused System.Char icalls.
20397         
20398 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
20399
20400         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
20401         code when we P/Invoke the first library in Windows.Forms, instead
20402         of when we first open the assembly.
20403
20404         * assembly.c: Drop the lookup from here.
20405
20406 2004-03-10  Martin Baulig  <martin@ximian.com>
20407
20408         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
20409         class for properties, fields and events.  Finally fixes #54945.
20410
20411 2004-03-10  Martin Baulig  <martin@ximian.com>
20412
20413         * metadata.c (mono_metadata_class_equal): New static function;
20414         checks whether two generic instances or two generic parameters are
20415         equal.
20416         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
20417         compare classes.        
20418
20419 2004-03-10  Martin Baulig  <martin@ximian.com>
20420
20421         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
20422
20423         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
20424         argument and write it into the `reflection_info' field.
20425
20426         * icall.c
20427         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
20428         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
20429
20430 2004-03-09  Jackson Harper  <jackson@ximian.com>
20431
20432         * char-conversions.h: use 8 bits for numeric data its all we need
20433         * icall.c: numeric data is only 8 bits now.
20434
20435 2004-03-09  Martin Baulig  <martin@ximian.com>
20436
20437         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
20438
20439         * class.c (init_properties, init_events): Initialize the new
20440         `parent' field.
20441
20442         * reflection.c (typebuilder_setup_properties): Likewise.
20443         (typebuilder_setup_events): Likewise.
20444
20445         * reflection.h (MonoEventInfo): Replaced `parent with
20446         `declaring_type' and `reflected_type'.
20447
20448         * icall.c (ves_icall_get_property_info): Distinguish between
20449         declaring and reflected type.
20450         (ves_icall_get_event_info): Likewise.
20451
20452 2004-03-09  Martin Baulig  <martin@ximian.com>
20453
20454         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
20455         (ves_icall_Type_GetField): Correctly set field->klass.
20456
20457 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20458
20459         * loader.h: Fix warning.
20460
20461 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
20462
20463         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
20464         library routine if present.  Notice that it will still continue
20465         executing even if its missing, for those working on the Gtk#
20466         edition of Windows.Forms.
20467
20468         * assembly.c (do_mono_assembly_open): If loading the
20469         System.Windows.Forms call mono_loader_wini_init.
20470
20471 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20472
20473         * class.h: Added MonoRemoteClass struct.
20474         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
20475         function for MonoStrings.
20476         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
20477         Added internal call for getting the proxy type.
20478         * marshal.c: Get the type of transparent proxies from its remote_class.
20479         Added methods that generate the IL for type checks and casts:
20480         mono_marshal_get_isinst, mono_marshal_get_castclass, 
20481         mono_marshal_get_proxy_cancast.
20482         * marshal.h: Declaration of the previous new methods.
20483         * object.c: Added new moethods for creating and updating MonoRemoteClass
20484         instances: mono_remote_class, mono_upgrade_remote_class, 
20485         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
20486         * verify.c: FIx transparent_proxy_fields layout.
20487         * appdomain.c: Bump corlib version.
20488
20489 2004-03-04  Jackson Harper  <jackson@ximian.com>
20490
20491         * icall.c: Add icall to access char conversion tables.
20492         * char-conversions.h: Character conversion tables.
20493         * Makefile.am: Add char-conversions.h private header file.
20494         
20495 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * appdomain.c (unload_thread_main): Increase unloading timeout to
20498         10 sec as a temporary workaround for Nant problems.
20499
20500 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
20501
20502         * gc.c: Add checks for GC_enable and GC_disable.
20503
20504         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
20505         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
20506         (bug #54988).
20507         
20508 2004-02-27  Martin Baulig  <martin@ximian.com>
20509
20510         * reflection.c (mono_reflection_bind_generic_parameters): Take a
20511         `MonoReflectionType *' instead of a `MonoType *'.
20512
20513 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * gc.c (run_finalize): Avoid finalizing the object representing the
20516         finalizer thread.
20517         (finalizer_thread): Fix warning.
20518
20519 2004-02-25  Martin Baulig  <martin@ximian.com>
20520
20521         * class.c (_mono_class_get_instantiation_name): Added `int offset'
20522         argument for nested types.
20523         (mono_class_create_generic): Added support for nested generictypes.
20524
20525         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
20526         `GList *nested'.
20527
20528         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
20529
20530         * reflection.c (method_encode_signature): Increase the minimum
20531         value of `size' from 10 to 11.
20532         (mono_reflection_bind_generic_parameters): Take `int type_argc'
20533         and `MonoType **types' arguments instead of the `MonoArray
20534         *types'; added `MonoType *nested_in'.  Recursively instantiate
20535         nested classes. 
20536
20537 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
20540         stack_overflow_ex members which are used by exception handling.
20541
20542         * appdomain.c (mono_runtime_init): Initialize the new members.
20543
20544         * gc.c (mono_gc_enable): New helper function.
20545         * gc.c (mono_gc_disable): New helper function.
20546
20547 2004-02-23  Martin Baulig  <martin@ximian.com>
20548
20549         * icall.c: I must have been really stupid - make it actually work
20550         this time ;-)
20551
20552 2004-02-23  Martin Baulig  <martin@ximian.com>
20553
20554         * loader.c (method_from_memberref): Only inflate the method if
20555         it's in another klass.
20556
20557 2004-02-23  Martin Baulig  <martin@ximian.com>
20558
20559         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
20560         (mono_class_init): If we're a generic instance and an interface,
20561         compute `class->interface_id'; also create `class->interfaces'
20562         here and inflate them.
20563
20564         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
20565         `ginst->is_open'.
20566         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
20567
20568         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
20569
20570 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
20571
20572         * reflection.c (method_encode_code): Improved the error message
20573         generated by the exception.
20574
20575 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20576
20577         * icall.c: Martin did not do what he said in the ChangeLog for
20578         2004-02-18, but put back the changes for properties and events.
20579         Commenting those changes out again and adding comment to bug #54518.
20580         
20581         * process.c: removed warning.
20582
20583 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * marshal.c (emit_struct_conv): Print an error message instead of
20586         asserting when a type does not have the StructLayout attribute.
20587
20588 2004-02-20  Martin Baulig  <martin@ximian.com>
20589
20590         * reflection.c (mono_type_get_object): Also use the cache for
20591         generic instances.
20592         (mono_reflection_bind_generic_parameters): Always compute
20593         `ginst->ifaces'.        
20594
20595 2004-02-20  Martin Baulig  <martin@ximian.com>
20596
20597         * class.h (MonoGenericMethod): Removed `klass'.
20598
20599         * class.c (mono_class_inflate_generic_method): Added `MonoClass
20600         *klass' argument.
20601
20602 2004-02-20  Martin Baulig  <martin@ximian.com>
20603
20604         * reflection.c (method_encode_methodspec): Actually use the
20605         uninflated signature for the memberref.
20606
20607 2004-02-20  Martin Baulig  <martin@ximian.com>
20608
20609         * class.h (MonoGenericMethod): Removed `declaring'.
20610
20611         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
20612         is NULL, compute it here.
20613
20614 2004-02-20  Martin Baulig  <martin@ximian.com>
20615
20616         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
20617
20618         * metadata.c (mono_metadata_generic_inst_hash): New method.
20619         (mono_metadata_generic_inst_equal): New method.
20620
20621         * reflection.c (mono_reflection_bind_generic_parameters): Use the
20622         `klass->image->generic_inst_cache' cache to avoid creating
20623         duplicate MonoGenericInst's.
20624
20625         * class.c (mono_class_inflate_generic_type): Use the cache.
20626
20627 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
20628
20629         * object.c: fixed gc descriptor calculation for embedded valuetypes.
20630
20631 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20632
20633         * icall.c: added Socket.WSAIoctl icall.
20634
20635         * socket-io.[ch]: implemented
20636         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
20637
20638 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
20639
20640         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
20641
20642 2004-02-18  Urs C Muff  <umuff@quark.com>
20643
20644         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
20645         this work on PPC and other big-endian architectures.
20646
20647         * debug-mono-symfile.h: Prepended the names of all the `guint32'
20648         fields with an underscore to make sure they're only accessed by
20649         the read32() macro.
20650
20651 2004-02-18  Martin Baulig  <martin@ximian.com>
20652
20653         * icall.c: Put the klass->refclass changes back for methods and
20654         fields, but not for properties and events.  We're currently not
20655         distinguishing between DeclaringType and ReflectedType for
20656         properties and events, that's what caused the regressions.
20657
20658 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20659
20660         * object.c:
20661         (mono_async_result_new): the handle can be NULL.
20662
20663         * threadpool.c: Use an event instead of a semaphore, don't initialize
20664         it until needed. This saves quite a few semaphores from being created
20665         when using the threadpool.
20666
20667 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
20668
20669         * object.c (mono_string_is_interned_lookup): Fix interning of long
20670         strings. Fixes #54473.
20671
20672         * domain.c (ldstr_equal): Optimize if the two strings are equal.
20673
20674         * icall.c: Revert the klass->refclass changes since they introduce
20675         regressions (bug #54518).
20676
20677 2004-02-18  Martin Baulig  <martin@ximian.com>
20678
20679         * class.c (mono_class_init): If we're a generic instance and don't
20680         come from a TypeBuilder, inflate our members here.
20681         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
20682         (mono_class_create_generic): New public method.
20683         (mono_class_initialize_generic): Removed.
20684         (get_instantiation_name): Renamed to
20685         _mono_class_get_instantiation_name() and made it public.
20686
20687 2004-02-18  Martin Baulig  <martin@ximian.com>
20688
20689         * class.c (mono_class_inflate_generic_type): Clear the new
20690         instance's `nginst->klass' when inflating a generic instance.
20691         (mono_class_is_subclass_of): Added (basic) support for generic
20692         instances.
20693
20694 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
20695
20696         * appdomain.h, domain.c: use a MonoCodeManager instead of a
20697         MonoMempool to hold compiled native code.
20698
20699 2004-02-17  Martin Baulig  <martin@ximian.com>
20700
20701         * class.h (MonoDynamicGenericInst): Added `count_properties' and
20702         `properties'.
20703
20704         * reflection.c (mono_reflection_generic_inst_initialize): Added
20705         `MonoArray *properties' argument.
20706
20707         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
20708
20709 2004-02-17  Martin Baulig  <martin@ximian.com>
20710
20711         * icall.c (ves_icall_Type_GetFields): Renamed to
20712         ves_icall_Type_GetFields_internal() and added a
20713         `MonoReflectionType *rtype' argument; pass it to
20714         mono_field_get_object() to set the field's "reflected" type.
20715         (ves_icall_Type_GetConstructors): Likewise.
20716         (ves_icall_Type_GetEvents): Likewise.
20717         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
20718         argument; pass it to mono_method_get_object() to set the method's
20719         "reflected" type.       
20720
20721 2004-02-17  Martin Baulig  <martin@ximian.com>
20722
20723         * class.h (MonoDynamicGenericInst): New type.
20724         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
20725
20726         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
20727         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
20728         (ves_icall_MonoGenericInst_GetFields): New interncall.
20729
20730         * class.c (mono_class_from_generic): Don't call
20731         mono_class_initialize_generic() if this is a dynamic instance;
20732         ie. it's being created from a TypeBuilder.
20733         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
20734         `class->byval_arg.type'.
20735
20736         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
20737         to `inflate_method' and made static.
20738         (mono_reflection_inflate_field): Removed.
20739         (mono_reflection_generic_inst_initialize): New public method.
20740
20741         * reflection.h (MonoReflectionGenericInst): Removed `methods',
20742         `ctors' and `fields'; added `initialized'.
20743
20744 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20745
20746         * debug-helpers.c (mono_method_full_name): Fix output for empty
20747         namespaces.
20748
20749 2004-02-12  Martin Baulig  <martin@ximian.com>
20750
20751         * class.h (MonoClassField): Added `MonoType *generic_type'.
20752
20753         * reflection.c (mono_image_get_fieldref_token): Added support for
20754         instantiated generic types.
20755         (field_encode_inflated_field): Removed.
20756         (mono_image_get_inflated_field_token): Removed.
20757         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
20758
20759         * reflection.h (MonoReflectionInflatedField): Removed.
20760
20761 2004-02-12  Martin Baulig  <martin@ximian.com>
20762
20763         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
20764         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
20765
20766         * reflection.c (mono_image_get_methodspec_token): Take a
20767         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
20768         (mono_image_create_token): Check whether we have a
20769         `method->signature->gen_method' and call
20770         mono_image_get_methodspec_token() if appropriate.
20771         (inflated_method_get_object): Removed.
20772         (mono_reflection_bind_generic_method_parameters): Return a
20773         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
20774         (mono_reflection_inflate_method_or_ctor): Likewise.
20775
20776         * reflection.h (MonoReflectionInflatedMethod): Removed.
20777
20778 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
20779
20780         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
20781         for custom valuetype marshalling.
20782
20783         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
20784
20785 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20786
20787         * icall.c: fixed WSAGetLastError_internal name.
20788
20789 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20790
20791         * threads.c (mono_thread_attach): Allow this to be called multiple
20792         times for a thread.
20793         
20794         * threads.c (build_wait_tids): Do not wait for ourselves.
20795
20796         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
20797         appdomain list is empty.
20798
20799         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
20800         memory returned by mono_string_builder_to_utf16, since it points into
20801         managed memory. Thanks to Bernie Solomon for noticing this.
20802
20803         * icall.c: Add AppDomainSetup icalls.
20804
20805         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
20806
20807         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
20808         types.
20809
20810         * reflection.c (reflection_methodbuilder_to_mono_method): Save
20811         custom attributes to the method_aux struct. Also fix array indexes etc.
20812
20813         * loader.c (mono_method_get_param_names): Make dynamic case work again.
20814         
20815 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
20816
20817         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
20818         (both static and runtime) and reduce startup time.
20819
20820 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20821
20822         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
20823         AsAny marshalling conversion instead of crashing.
20824
20825         * marshal.c: Fix warnings.
20826
20827 2004-02-09  Martin Baulig  <martin@ximian.com>
20828
20829         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
20830
20831         * reflection.h (MonoReflectionInflatedMethod): Removed the
20832         `declaring' field, it's now in the unmanaged MonoGenericMethod.
20833
20834         * reflection.c (method_encode_methodspec): Removed the `method'
20835         argument; we get it from `gmethod->declaring'.
20836         (inflated_method_get_object): Removed the `declaring' argument.
20837
20838 2004-02-09  Martin Baulig  <martin@ximian.com>
20839
20840         * class.h (MonoGenericMethod): New type.
20841         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
20842         `generic_method'.
20843
20844         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
20845         a `MonoGenericMethod *gen_method' one.
20846
20847         * class.c (mono_class_inflate_generic_type): Take an additional
20848         `MonoGenericMethod * argument.  This is only non-NULL if we're
20849         inflating types for a generic method.   
20850         (mono_class_inflate_generic_signature): Renamed to
20851         inflate_generic_signature() and made static; take a
20852         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
20853         (inflate_generic_header): Take a `MonoGenericMethod *' argument
20854         instead of a `MonoGenericInst *' one.
20855         (mono_class_inflate_generic_method): Likewise.
20856
20857         * reflection.c (encode_generic_method_sig): Take a
20858         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
20859         (method_encode_methodspec): Likewise.
20860         (inflated_method_get_object): Likewise. 
20861
20862         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
20863         field with a `MonoGenericMethod *gmethod' one.  
20864
20865 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
20866
20867         * class.h (mono_class_has_parent): add parens to expansion
20868         so you can ! this.
20869
20870 2004-02-08  Martin Baulig  <martin@ximian.com>
20871
20872         * image.h (MonoImage): Removed `generics_cache'.
20873
20874         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
20875         instead of a `MonoType *' argument; removed the `inflate_methods'
20876         argument.  Don't inflate methods here.
20877
20878         * loader.c (find_method): If it's a generic instance, call
20879         mono_class_init() on the `sclass->generic_inst->generic_type'.
20880
20881         * metadata.c (mono_type_size): Make this work on uninitialized
20882         generic instances; call it on the `ginst->generic_type's class.
20883
20884         * reflection.c (mono_reflection_bind_generic_parameters): Call
20885         mono_class_from_generic() to create the `ginst->klass'.
20886
20887 2004-02-08  Martin Baulig  <martin@ximian.com>
20888
20889         * class.h (MonoClass): Changed type of `generic_inst' from
20890         `MonoType *' to `MonoGenericInst *'.
20891
20892 2004-02-08  Martin Baulig  <martin@ximian.com>
20893
20894         * icall.c (ves_icall_Type_BindGenericParameters): Just call
20895         mono_type_get_object(), this is now creating a `MonoGenericInst'
20896         for MONO_TYPE_GENERICINST.
20897         (ves_icall_MonoGenericInst_GetParentType): Likewise.
20898         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
20899
20900         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
20901         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
20902         (inflated_method_get_object): Added `MonoClass *refclass' argument.
20903         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
20904         and reflected type.
20905
20906         * reflection.h (MonoReflectionInflatedMethod): Removed
20907         `declaring_type' and `reflected_type'.
20908
20909 2004-02-08  Martin Baulig  <martin@ximian.com>
20910
20911         * class.h (MonoGenericInst): Added `MonoType *parent' and
20912         `MonoType **ifaces'.
20913
20914         * reflection.h (MonoReflectionGenericInst): Removed `klass',
20915         `parent' and `interfaces'.
20916
20917         * reflection.c (mono_reflection_bind_generic_parameters): Take a
20918         `MonoType *' argument and return a `MonoType *'.
20919
20920         * icall.c
20921         (ves_icall_MonoGenericInst_GetParentType): New interncall.
20922         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
20923
20924 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
20927         valuetype marshalling.
20928
20929 2004-02-06  Martin Baulig  <martin@ximian.com>
20930
20931         * class.c
20932         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
20933         (my_mono_class_from_generic_parameter): Likewise.
20934
20935 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
20936
20937         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
20938         contents of the symbol files lazily.
20939
20940         * object.h (MonoThread): Add 'name' and 'name_len' fields.
20941
20942         * threads.h threads.c icall.c: New icalls for getting and setting the
20943         threads name.
20944
20945 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
20946
20947         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
20948         Raise an exception when the domain is not found.
20949
20950 2004-02-03  Martin Baulig  <martin@ximian.com>
20951
20952         * reflection.c (mono_image_get_methodspec_token): Use the
20953         uninflated signature; fixes gen-33.
20954
20955 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20956
20957         * gc.c threads.c: Make the finalizer thread a normal managed thread so
20958         the finalizer code can use thread functionality.
20959
20960         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
20961         the finalizer thread.
20962
20963         * threads.c: Make some functions more robust.
20964
20965         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
20966
20967         * metadata.h: Add new marshalling conventions.
20968
20969         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
20970         stringbuilder marshalling. Fixes #53700.
20971
20972         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
20973
20974         * reflection.c (mono_image_get_type_info): Save declarative security
20975         info.
20976
20977         * reflection.c (mono_image_get_field_info): Handle uninitialized 
20978         unmanaged fields as well.
20979
20980         * appdomain.c: Bump corlib version.
20981
20982 2004-02-01  Martin Baulig  <martin@ximian.com>
20983
20984         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
20985         method type arguments.  
20986
20987 2004-01-30  Duncan Mak  <duncan@ximian.com>
20988
20989         * marshal.h: Add prototype for
20990         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
20991         and
20992         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
20993         fix the build.
20994
20995 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
20998         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
20999
21000 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
21001
21002         * marshal.c (mono_marshal_get_native_wrapper): Add support for
21003         custom marshalling of valuetypes.
21004
21005         * marshal.c: Fix some warnings.
21006
21007 2004-01-29  Martin Baulig  <martin@ximian.com>
21008
21009         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
21010         for generic method parameters.
21011
21012         * reflection.c (method_encode_methodspec): Write the uninflated
21013         signature into the methodspec table.
21014         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
21015         is always the uninflated method.
21016         (reflection_methodbuilder_to_mono_method): Copy the generic
21017         parameters from the MethodBuilder into `header->gen_params'.
21018
21019 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
21020
21021         * class.c (mono_class_from_generic_parameter): Fix warning.
21022
21023 2004-01-27  Martin Baulig  <martin@ximian.com>
21024
21025         * class.c (mono_class_from_generic_parameter): Don't create
21026         `klass->methods' here.  
21027
21028 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
21031         extension since it does not work with libraries named lib<FOO>.dll.so.
21032
21033 2004-01-25  Martin Baulig  <martin@ximian.com>
21034
21035         * class.c (mono_class_inflate_generic_type): Added support for
21036         MONO_TYPE_GENERICINST.
21037
21038         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
21039         inflate methods on open constructed types.      
21040
21041 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21042
21043         * object.c: fire ProcessExit event in the root AppDomain after running
21044         Main. Fixes bug #53299.
21045
21046 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21047
21048         * socket-io.c: include the new socket-wrappers.h header.
21049         Use the wrappers instead of the unix socket functions to make the code
21050         more clear.
21051
21052 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21053
21054         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
21055
21056         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
21057         Fixes #22532.
21058
21059 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
21060
21061         * reflection.c (mono_image_create_pefile): Handle the case when the
21062         entry point is not a MethodBuilder.
21063
21064         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
21065         field to ReflectionMethod since it is not allways a builder.
21066
21067         * reflection.c (type_get_fully_qualified_name): New helper function to
21068         return the fully qualified name of a type.
21069
21070         * reflection.c (encode_marshal_blob): Always emit the fully qualified
21071         type name for custom marshallers.
21072
21073         * reflection.c (mono_marshal_spec_from_builder): Ditto.
21074
21075         * class.c (mono_class_setup_vtable): If a parent class already 
21076         implements an interface, use the implementing methods from that class.
21077         Fixes #53148.
21078
21079 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21080
21081         * threadpool.c: just return instead of ExitThread to allow for thread
21082         clean up earlier.
21083
21084 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
21085
21086         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
21087         when closing resource modules.
21088
21089         * reflection.c (mono_image_create_pefile): Handle the case when the
21090         entry point is not a MethodBuilder.
21091
21092         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
21093         field to ReflectionMethod since it is not allways a builder.
21094
21095 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
21096
21097         * marshal.c (mono_marshal_get_managed_wrapper): 
21098         mono_marshal_alloc takes native int so CONV_I
21099         the arg for 64bits.
21100
21101 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * reflection.c (fixup_cattrs): New function to fixup the methoddef
21104         tokens in the cattr table. Fixes #53108.
21105
21106 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21107
21108         * loader.c: don't trim ".dll" before looking up in the config file.
21109         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
21110
21111 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21112
21113         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
21114         Return the module which contains the resource as well.
21115         (ves_icall_System_Reflection_Module_Close): New icall.
21116
21117         * appdomain.c: Bump corlib version number.
21118
21119         * image.c (mono_image_addref): New public function.
21120
21121         * assembly.c: Call mono_image_addref.
21122
21123         * reflection.c (mono_module_get_object): Increase reference count of 
21124         the image.
21125
21126         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
21127         Fixes #22532.
21128
21129         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
21130         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
21131         proper exceptions on DllImport problems.
21132
21133 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
21134
21135         * class.c, metadata.c: eliminate CSIZE macro.
21136
21137 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
21138
21139         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
21140         * object.h: Added async_callback field in MonoAsyncResult.
21141         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
21142         * verify.c: Added async_callback in MonoAsyncResult layout.
21143
21144 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
21145
21146         * reflection.c (mono_reflection_get_custom_attrs): Add support
21147         for Modules.
21148
21149 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21150
21151         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
21152         marshalling.
21153         (mono_marshal_method_from_wrapper): Add null pointer check.
21154
21155 2004-01-16  Martin Baulig  <martin@ximian.com>
21156
21157         * debug-mono-symfile.h: Set version number to 36 and reflect
21158         latest symbol writer changes.
21159
21160 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21161
21162         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
21163         multi-dimensional arrays.
21164         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
21165         (mono_class_from_mono_type): Use bounded_array_class_get.
21166         
21167         * class.c (mono_bounded_array_class_get): New function which takes
21168         a 'bounded' bool argument to distinguish vectors from one dimensional
21169         arrays.
21170
21171         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
21172         bounded_array_class_get if the array has bounds.
21173
21174         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
21175         Search modules loaded using AssemblyBuilder:AddModule as well.
21176
21177 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21178
21179         * appdomain.c: increased corlib version.
21180         * filewatcher.c: removed g_print.
21181         * icall.c:
21182         (get_property_info): only allocate what is actually requested.
21183         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
21184
21185 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21186
21187         * Makefile.am: added filewatcher.[ch]
21188         * filewatcher.[ch]: FileSystemWatcher runtime support.
21189         * icall.c: added new FSW icalls.
21190
21191 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21192
21193         * string-icalls.c: fix stringbuilder regression as suggested by
21194         Iain McCoy <iain@mccoy.id.au>.
21195
21196 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21197
21198         * process.c (process_read_stringtable_block): Recognize '007f' as
21199         a language neutral stringtable block.
21200
21201 2004-01-12  Patrik Torstensson
21202
21203         * object.h (MonoStringBuilder) : Changed layout to support our
21204         new stringbuilder class.
21205         * marshal.c: Change marshalling to support the new layout of 
21206         string builder.
21207         * appdomain.c: increased version number because new layout of
21208         string builder.
21209
21210 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
21211
21212         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
21213         assembly name as an string instead of an AssemblyName, since it is
21214         easier to extract info from it.
21215
21216         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
21217         the culture subdirectories too. Fixes #52231.
21218
21219 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21220
21221         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
21222         It takes 2 new parameters with an optional name for the method to look
21223         for and case ignoring info.
21224
21225         * threadpool.c: removed unused variable.
21226
21227 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21228
21229         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
21230         It takes 2 new parameters with an optional name for the property to look
21231         for and case ignoring info.
21232         Fixes bug #52753.
21233
21234 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21235
21236         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
21237         Fix #52451.
21238
21239 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21240
21241         * appdomain.c:
21242         * assembly.c: escape the uri before passing it to g_filename_from_uri.
21243         Fixes bug #52630.
21244
21245 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * reflection.c: Add support for more than one unmanaged resource.
21248
21249         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
21250         in field->def_value, as done in all other cases.
21251
21252         * reflection.c (mono_reflection_get_custom_attrs): Add support for
21253         TypeBuilders.
21254
21255         * reflection.c (mono_reflection_create_runtime_class): Remove 
21256         errorneous assignment to klass->element_class, since it is already
21257         done in mono_reflection_setup_internal_class.
21258
21259 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21260
21261         * gc.c: added missing LeaveCriticalSection.
21262         * icall.c: indented a couple of lines.
21263         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
21264         if we call EndInvoke inside a callback. Fixes bug #52601.
21265
21266 2004-01-07  Martin Baulig  <martin@ximian.com>
21267
21268         * mono-debug-debugger.h
21269         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
21270
21271 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
21272
21273         * appdomain.c: Use messages in NotImplementedException.
21274
21275         * exception.c (mono_get_exception_not_implemented): Now this takes
21276         a message argument.
21277
21278         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
21279         exception instead of g_asserting an aborting when something is not
21280         implemented.
21281
21282         Add some inline docs.
21283
21284 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
21285
21286         * reflection.h: Update after changes to object layout.
21287
21288         * reflection.c: Implement saving of unmanaged aka win32 resources.
21289
21290         * appdomain.c: Bump version number.
21291
21292         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
21293         Handle missing domains gracefully.
21294
21295 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
21296
21297         * file-io.c : On Windows, there are much more invalid_path_chars.
21298
21299 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21300
21301         * class.h, object.c: prepare for GetType () speedup.
21302
21303 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
21304
21305         * profiler.c: workaround for --profile null reference exception on
21306           cygwin. Patch by Patrik Torstensson.
21307
21308 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
21309
21310         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
21311         make work for unaligned access.
21312
21313 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
21314
21315         * class.c: small cleanup (class->fields [i] -> field).
21316         * image.c: check address of metadata is valid.
21317
21318 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
21319
21320         * assembly.h assembly.c (mono_assembly_loaded): New public function to
21321         search the list of loaded assemblies.
21322
21323         * reflection.c (mono_reflection_type_from_name): Use 
21324         mono_assembly_loaded instead of mono_image_loaded.
21325
21326         * reflection.c: Fix warnings.
21327
21328 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
21329
21330         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
21331         is dynamic. This is needed since an assembly can contain both dynamic and
21332         non-dynamic images.
21333
21334         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
21335         assembly->dynamic.
21336
21337         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
21338
21339         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
21340         to store modules loaded using AddModule.
21341
21342         * reflection.c (mono_image_fill_file_table): Generalize this so it works
21343         on Modules.
21344
21345         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
21346
21347         * reflection.c (mono_image_fill_export_table_from_module): New function to
21348         fill out the EXPORTEDTYPES table from a module.
21349
21350         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
21351         into a separate function. Also handle loaded non-dynamic modules.
21352
21353         * reflection.c (mono_image_basic_init): Fix memory allocation.
21354
21355         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21356
21357         * assembly.c (mono_assembly_load_references): Make this public.
21358
21359 2003-12-19  Martin Baulig  <martin@ximian.com>
21360
21361         * class.c (mono_class_initialize_generic): Made this static, take
21362         a `MonoGenericInst *' instead of a `MonoClass *'.
21363         (mono_class_from_generic): Call mono_class_initialize_generic()
21364         unless we're already initialized or being called from
21365         do_mono_metadata_parse_generic_inst().
21366
21367         * class.h (MonoGenericInst): Added `initialized' and
21368         `init_pending' flags.
21369
21370         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
21371         `mono_class_init (gklass)' or mono_class_initialize_generic()
21372         here; set `generic_inst->init_pending' while parsing the
21373         `type_argv'.
21374
21375 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
21376
21377         * locales.c: include string.h for memxxx prototypes
21378
21379 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21380
21381         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
21382         constructor when accessing literal fields.
21383
21384 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
21385
21386         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21387
21388         * reflection.c (assembly_add_resource_manifest): New function to fill
21389         the MANIFESTRESOURCE table.
21390
21391         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
21392
21393         * reflection.h: Update to changes in class layout.
21394
21395         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
21396         Reenable call to mono_runtime_is_shutting_down ().
21397
21398         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
21399         determine if the runtime is shutting down.
21400
21401 2003-12-16  Jackson Harper <jackson@ximian.com>
21402
21403         * icall.c: comment out call to mono_runtime_is_shutting_down to
21404         fix build.
21405         
21406 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
21409         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
21410
21411 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
21412
21413         * reflection.c: move definition of swap_with_size
21414         to before its first call
21415
21416 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
21417
21418         * appdomain.c (mono_runtime_is_shutting_down): New public function.
21419
21420         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
21421         icall.
21422
21423         * object.c: Fix warnings.
21424
21425         * icall.c (ves_icall_Type_Get...): Only consider inherited static
21426         members if FlattenHierarchy is set.
21427
21428         * reflection.c (mono_image_add_decl_security): New function to emit
21429         declarative security.
21430
21431         * reflection.h reflection.c: Add support for declarative security.
21432
21433         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
21434         
21435 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21436
21437         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
21438         
21439         * appdomain.c verify.c: Moved corlib version checking into its own
21440         function in appdomain.c since it needs to create vtables etc.
21441
21442 2003-12-13  Patrik Torstensson <p@rxc.se>
21443
21444         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
21445         instead of unwrapped server.
21446
21447 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
21448
21449         * verify.c (check_corlib): Fix field index.
21450
21451 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
21452
21453         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
21454         GetGacPath icall.
21455
21456 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
21457
21458         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
21459         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
21460         cope with sizeof(size_t) != sizeof(guint32).
21461
21462 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21463
21464         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
21465         in case of failure.
21466
21467 2003-12-10  Mark Crichton <crichton@gimp.org>
21468
21469         * icall.c: removed the GetNonZeroBytes.  We now handle this case
21470         in managed code.
21471
21472         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
21473
21474 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
21475
21476         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
21477         marked as deleted.
21478
21479 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21480
21481         * verify.c (check_corlib): Handle the case when the version field is 
21482         initialized by a static constructor.
21483
21484 2003-12-08  Patrik Torstensson  <p@rxc.se>
21485
21486     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
21487
21488 2003-12-08  Martin Baulig  <martin@ximian.com>
21489
21490         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
21491         a MonoReflectionGenericParameter, also take the parameter index
21492         and name as arguments.
21493         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
21494         (ves_icall_MonoGenericParam_initialize): New interncall.
21495         (ves_icall_Type_make_byref_type): New interncall.
21496
21497         * reflection.h (MonoReflectionGenericParam): Derive from
21498         MonoReflectionType, not just from MonoObject.  Added `refobj' and
21499         `index' fields.
21500
21501         * reflection.c (mono_reflection_define_generic_parameter): Create
21502         and return a new MonoReflectionGenericParam; don't initialize the
21503         constraints here.
21504         (mono_reflection_initialize_generic_parameter): New public method;
21505         initializes the constraints and creates the `param->pklass'.
21506
21507 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * reflection.h reflection.c: Use the new fields 'num_types', 
21510         'num_fields' and 'num_methods' to track the number of types etc.
21511
21512         * verify.c (check_corlib): Check corlib version number.
21513
21514 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
21515
21516         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
21517         function works on all methods.
21518
21519 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21520
21521         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
21522         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
21523         the custom_type_info flag of the transparent proxy.
21524         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
21525         objects that supports IRemotingTypeInfo.
21526         * object.h: Added custom_type_info field in transparent proxy.
21527
21528 2003-12-06  Martin Baulig  <martin@ximian.com>
21529
21530         * class.c (mono_class_create_from_generic): Removed.
21531         (mono_class_from_generic): Check `ginst->klass' before doing
21532         anything else.  This is important to fully support "recursive"
21533         generic types.
21534
21535         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
21536         empty `generic_inst->klass' before doing anything else.
21537
21538 2003-12-06  Dick Porter  <dick@ximian.com>
21539
21540         * verify.c: 
21541         * object.h:
21542         * icall.c:
21543         * locales.c: Use C structs to access class fields.  Don't do a
21544         conversion between MonoString and UChar because both are
21545         platform-endian UTF-16.  Compare now takes startindex and count
21546         parameters.  Add a char overload for IndexOf.  Speed up the
21547         invariant string IndexOf.
21548
21549 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
21550
21551         * Makefile.am (monosn_LDADD): Fix parallel build.
21552
21553 2003-12-04  Martin Baulig  <martin@ximian.com>
21554
21555         * icall.c
21556         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
21557         (ves_icall_Type_make_array_type): New interncall.       
21558
21559 2003-12-04  Martin Baulig  <martin@ximian.com>
21560
21561         * locales.c: also change it in the !HAVE_ICU case.
21562
21563 2003-12-04  Dick Porter  <dick@ximian.com>
21564
21565         * icall.c:
21566         * locales.c: construct_compareinfo is now in CompareInfo, not
21567         CultureInfo.
21568
21569 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21570
21571         * image.c (mono_image_load_file_for_image): Cache loaded images in the
21572         image->files array.
21573
21574         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
21575         table as well.
21576
21577         * assembly.c (mono_assembly_load_references): Only load references
21578         once.
21579
21580         * class.c (mono_class_from_name): Avoid linear search of the 
21581         EXPORTEDTYPE table.
21582
21583         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
21584
21585 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * image.h (MonoImage): Add 'field_cache' field.
21588
21589         * loader.c (mono_field_from_token): Cache field lookups.
21590         
21591         * reflection.c (mono_module_get_object): Fix name property.
21592
21593         * icall.c (ves_icall_get_enum_info): Update after changes to 
21594         mono_metadata_get_constant_index ().
21595
21596         * icall.c: Get rid of get_type_info icall, use a separate icall for
21597         each type property to avoid needless memory allocations. Fixes #51514.
21598
21599         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
21600         to avoid needless binary searches.
21601
21602         * class.c (class_compute_field_layout): Move the initialization of
21603         field->def_value to mono_class_vtable ().
21604
21605         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
21606         non-corlib types.
21607
21608         * object.c (mono_object_allocate): Make it inline.
21609
21610         * object.c (mono_object_allocate_spec): Make it inline.
21611         
21612 2003-12-02  Dick Porter  <dick@ximian.com>
21613
21614         * locales.c (create_NumberFormat): NumberFormatInfo construction.
21615         Patch by Mohammad DAMT (mdamt@cdl2000.com).
21616
21617 2003-12-01  Dick Porter  <dick@ximian.com>
21618
21619         * threads.c: Fix signature and call in CreateMutex and
21620         CreateEvent.
21621
21622 2003-12-01  Dick Porter  <dick@ximian.com>
21623
21624         * icall.c: 
21625         * locales.c: Implement string compares and searching
21626
21627         * object.h: Add extra Thread field
21628
21629 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
21630
21631         * reflection.c (fixup_method): Add support for MonoCMethod.
21632
21633 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
21634
21635         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
21636
21637         * reflection.c (assembly_name_to_aname): Allow extra characters in
21638         assembly names. Fixes #51468.
21639
21640 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21641
21642         * exception.c (mono_exception_from_name_domain): New helper function.
21643
21644         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
21645         exception object in the correct domain.
21646
21647         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
21648         formatting + make a copy a the input data.
21649
21650         * loader.c (mono_get_method_from_token): Methods which contain
21651         native code do not have entries in the ImplMap.
21652
21653         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
21654         Thanks to Gonzalo for spotting this.
21655         
21656         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
21657         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
21658
21659         * assembly.h (mono_assembly_load_from): Split the second part of 
21660         assembly loading into a new public function.
21661
21662         * exception.h (mono_get_exception_bad_image_format): New function.
21663
21664 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
21667         Enumerate all modules inside a dynamic assembly. Fixes #51293.
21668         
21669         * icall.c: Add new icall for creating dynamic methods.
21670
21671         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
21672
21673         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
21674
21675         * reflection.c (mono_reflection_create_dynamic_method): New icall to
21676         create a dynamic method.
21677
21678         * reflection.c (resolve_object): New helper function.
21679
21680         * reflection.c: Generalize ReflectionMethodBuilder and the functions
21681         which manipulate it so they can also work on dynamic methods.
21682
21683         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
21684         creating the MonoReflectionMethodAux structure if it is not needed.
21685         
21686         * reflection.h verify.c: Update after changes to object layout.
21687
21688         * reflection.c (method_builder_encode_signature): Fix compilation on
21689         gcc 2.95.x.
21690
21691 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
21692
21693         * appdomain.h: Added support for context static fields. Added static_data
21694           field to MonoAppContext and renamed thread_static_fields to a more
21695           generic special_static_fields in MonoAppDomain, since it can now contain
21696           context static fields.
21697         * domain.c: Updated hashtable name.
21698         * object.c: Replaced field_is_thread_static() for a more generic
21699           field_is_special_static() which also checks for context static attribute.
21700           In mono_class_vtable(), added support for static context fields.
21701         * threads.c: Changed methods that manage thread static fields to more
21702           generic methods so they can be reused both for thread and context static
21703           data.
21704         * threads.h: Declared some new methods.
21705
21706 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * reflection.h: Update after changes to the managed types.
21709
21710         * reflection.c (encode_custom_modifiers): New helper function.
21711
21712         * reflection.c (method_encode_signature): Emit custom modifiers.
21713
21714         * reflection.c (field_encode_signature): Emit custom modifiers.
21715
21716 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21717
21718         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
21719
21720         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
21721         implementation.
21722
21723         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
21724         icall.
21725
21726         * object.c (mono_field_get_value_object): New function.
21727
21728         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
21729         specific.
21730
21731 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21732
21733         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
21734         return a preallocated out-of-memory exception instance.
21735
21736         * object.c (out_of_memory): Use the new function.
21737
21738         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
21739         flag is before the custom modifiers. Fixes #49802.
21740
21741 2003-11-16  Martin Baulig  <martin@ximian.com>
21742
21743         * class.c (mono_class_is_open_constructed_type): Implemented the
21744         MONO_TYPE_GENERICINST case.
21745
21746 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * assembly.c (mono_assembly_fill_assembly_name): New function to
21749         fill out the MonoAssemblyName structure.
21750         (mono_assembly_open): Use the new function.
21751
21752         * icall.c (fill_reflection_assembly_name): New helper function.
21753
21754         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
21755         new function.
21756
21757         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
21758
21759 2003-11-15  Martin Baulig  <martin@ximian.com>
21760
21761         * class.c (mono_class_is_open_constructed_type): New public
21762         function; checks whether a type is an open constructed type,
21763         ie. whether it still contains type parameters.
21764         (mono_class_inflate_generic_type): If we're a type parameter and
21765         the inflated type is also a MONO_TYPE_(M)VAR, return the original
21766         type.
21767
21768         * class.h (MonoGenericInst): Added `guint32 is_open'.
21769
21770         * loader.c (method_from_methodspec): Check whether we're an open
21771         or closed constructed type and set `ginst->is_open'.
21772
21773         * reflection.c (mono_reflection_bind_generic_parameters): Check
21774         whether we're an open or closed constructed type and set
21775         `ginst->is_open'.
21776         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
21777         from open constructed types.
21778
21779 2003-11-15  Martin Baulig  <martin@ximian.com>
21780
21781         * reflection.c (mono_reflection_bind_generic_parameters): If we're
21782         a generic instance (instead of a generic type declaration) with
21783         unbound generic parameters, bind them to our actual types.
21784
21785 2003-11-14  Martin Baulig  <martin@ximian.com>
21786
21787         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
21788
21789         * reflection.c (mono_reflection_bind_generic_parameters): If we're
21790         an interface type, populate `res->interfaces' with instantiated
21791         versions of all the interfaces we inherit.
21792
21793 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
21794
21795         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
21796         when MONO_PATH is set but doesn't contain the install dir.
21797
21798 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21799
21800         * icall.c:
21801         (ves_icall_Type_GetInterfaces): don't return an interface twice when
21802         it's also implemented in base classes. Fixes bug #50927.
21803
21804 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
21805
21806         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
21807         if this method is called from a finalizer. Fixes #50913.
21808
21809 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
21810
21811         * threads.c: Implement VolatileRead/VolatileWrite
21812
21813         * icall.c: Add new icalls for VolatileRead/VolatileWrite
21814
21815 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21816
21817         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
21818         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
21819         2.95.3.
21820
21821         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
21822         from Peter Ross (pro@missioncriticalit.com).
21823         
21824 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
21825
21826         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
21827
21828 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21829
21830         * assembly.c (mono_assembly_load_references): Disable check because it
21831         triggers on older corlibs which lots of people have.
21832
21833 2003-11-12  Jackson Harper  <jackson@ximian.com>
21834
21835         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
21836         load corlib.dll if mscorlib.dll is not found.
21837         * assembly.h: Remove corlib name define.
21838         * class.c:
21839         * domain.c:
21840         * image.c: Change corlib name to mscorlib.
21841         
21842 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
21845
21846 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
21847
21848         * appdomain.h: Added loader_optimization here to sync with the C#
21849         code, and add disallow_binding_redirects field.
21850
21851 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
21852
21853         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
21854
21855         * reflection.c (mono_image_build_metadata): Fix crash on modules
21856         with no types.
21857
21858         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
21859
21860         * icall.c (ves_icall_get_method_info): Return callingConvention as
21861         well.
21862
21863         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
21864         namespaces from the EXPORTEDTYPE table as well.
21865
21866         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
21867         from all modules inside the assembly.
21868         
21869 2003-11-11  Martin Baulig  <martin@ximian.com>
21870
21871         * reflection.c (mono_reflection_bind_generic_parameters): Make
21872         this work for interfaces.
21873
21874 2003-11-11  Martin Baulig  <martin@ximian.com>
21875
21876         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
21877
21878 2003-11-11  Martin Baulig  <martin@ximian.com>
21879
21880         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
21881         "MonoInflatedMethod" and "MonoInflatedCtor".
21882
21883 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
21884
21885         * reflection.c (resolution_scope_from_image): Use the assembly table
21886         from the manifest module, since other modules don't have it.
21887
21888         * debug-helpers.c (mono_type_full_name): New helper function.
21889
21890         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
21891
21892         * image.c (mono_image_load_file_for_image): New public function which
21893         is a replacement for the load_file_for_image in class.c.
21894
21895         * assembly.c (mono_assembly_load_module): A wrapper for the function
21896         above which does assembly association and reference loading too.
21897
21898         * class.c (mono_class_from_name): Call mono_assembly_load_module.
21899
21900 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21901
21902         * appdomain.c: not all of the attributes for the full assembly name
21903         are required and the order doesn't matter. Fixes bug #50787.
21904
21905 2003-11-10  Dick Porter  <dick@ximian.com>
21906
21907         * locales.c: Use platform-endian UTF16
21908
21909 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
21910
21911         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
21912         
21913 2003-11-10  Martin Baulig  <martin@ximian.com>
21914
21915         * metadata.c
21916         (mono_metadata_load_generic_params): Make this actually work.
21917
21918         * reflection.c (mono_reflection_bind_generic_parameters): If our
21919         parent is a generic instance, pass all the `types' to it, no
21920         matter whether it has the same number of type parameters or not.
21921
21922 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
21923
21924         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
21925
21926         * assembly.c (mono_assembly_load_references): Move the image<->assembly
21927         assignment code to this function so it gets called recursively for all
21928         modules.
21929
21930         * image.c (load_modules): Remove the assembly assignment since it is
21931         now done by mono_assembly_load_references.
21932         
21933         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
21934         Add 'module' argument.
21935         (mono_module_get_types): New helper function.
21936         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
21937
21938 2003-11-08  Martin Baulig  <martin@ximian.com>
21939
21940         * class.c (mono_class_inflate_generic_method): Interface method
21941         don't have a header.
21942
21943         * reflection.c (mono_image_get_methodspec_token): Take an
21944         additional `MonoGenericInst *' argument instead of reading it from
21945         the header; this is necessary to support interfaces.
21946         (mono_image_create_token): Pass the `MonoGenericInst *' from the
21947         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
21948         (inflated_method_get_object): Take an additional `MonoGenericInst *'
21949         argument.
21950
21951         * reflection.h (MonoReflectionInflatedMethod): Added
21952         `MonoGenericInst *ginst'.
21953
21954 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
21955
21956         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
21957
21958 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
21959
21960         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
21961
21962 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21963
21964         * reflection.c 
21965         (reflection_methodbuilder_from_method_builder):
21966         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
21967         initialize a ReflectionMethodBuilder structure.
21968         (mono_image_get_methodbuilder_token):
21969         (mono_image_get_ctorbuilder_token): New functions to emit memberref
21970         tokens which point to types in another module inside the same assembly.
21971
21972         * reflection.c: Use the new helper functions.
21973         
21974         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
21975
21976         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
21977         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
21978
21979         * reflection.c (resolution_scope_from_image): Emit a moduleref if
21980         neccesary.
21981
21982         * reflection.c (mono_image_build_metadata): Emit metadata only for the
21983         current module. Emit the manifest only for the main module.
21984
21985         * reflection.c (mono_image_create_token): Add assertion when a 
21986         memberref needs to be created.
21987
21988         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
21989
21990         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
21991         larger buffer for the custom attribute blob. Fixes #50637.
21992         
21993 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21994
21995         * threadpool.c: notify listener on async processing handles after
21996         invoking the async callback. Thanks to Zoltan.
21997
21998 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
21999
22000         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
22001         avoid code duplication.
22002
22003         * reflection.h (MonoDynamicImage): New type which is currently unused,
22004         but will be used through the ref.emit code in place of 
22005         MonoDynamicAssembly.
22006
22007         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
22008         object layout.
22009
22010         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
22011         a MonoDynamicImage instead of just a MonoImage.
22012         
22013         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
22014         icalls to ModuleBuilder but keep their semantics, so they will work
22015         with moduleb->assemblyb. This will change later.
22016         
22017 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
22018
22019         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
22020         object layout.
22021
22022         * reflection.c (mono_image_build_metadata): Avoid creation of a default
22023         main module, since it is now done by the managed code.
22024
22025 2003-11-03  Martin Baulig  <martin@ximian.com>
22026
22027         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
22028         `ginst->klass' here.
22029         (method_encode_methodspec): Don't use the `ginst->generic_method's
22030         klass if it's a generic instance, use `ginst->klass' in this case.
22031
22032 2003-11-03  Martin Baulig  <martin@ximian.com>
22033
22034         * reflection.c (mono_image_get_generic_method_param_info):
22035         Removed, use mono_image_get_generic_param_info() instead.
22036         (mono_image_get_type_info): Write the GenericParam table before
22037         the Method table.  This is neccessary because in the GenericParam
22038         table, type parameters of the class (ie. '!0' etc.) must come
22039         before the ones from its generic methods (ie. '!!0' etc).
22040
22041 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
22042
22043         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
22044
22045 2003-11-02  Martin Baulig  <martin@ximian.com>
22046
22047         * reflection.c (create_generic_typespec): Take a
22048         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
22049         the generic parameters from it.
22050
22051 2003-11-02  Martin Baulig  <martin@ximian.com>
22052
22053         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
22054         instead of a `MonoClassField *' since we just need the type.
22055         (create_generic_typespec): New static function.  Creates a
22056         TypeSpec token for a generic type declaration.
22057         (mono_image_get_generic_field_token): New static function.
22058         (mono_image_create_token): If we're a FieldBuilder in a generic
22059         type declaration, call mono_image_get_generic_field_token() to get
22060         the token.
22061
22062 2003-11-02  Martin Baulig  <martin@ximian.com>
22063
22064         * reflection.h
22065         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
22066         `MonoReflectionGenericInst *declaring_type' and
22067         `MonoReflectionGenericInst *reflected_type' fields.
22068
22069         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
22070         `MonoReflectionGenericInst *declaring_type' and a
22071         `MonoReflectionGenericInst *reflected_type' argument instead of a
22072         single `MonoReflectionGenericInst *type' one.  Set
22073         `res->declaring_type' and `res->reflected_type' from them.
22074         (mono_reflection_inflate_field): Likewise.      
22075
22076 2003-11-02  Martin Baulig  <martin@ximian.com>
22077
22078         * class.c (mono_class_setup_vtable): Don't store generic methods
22079         in the vtable.  
22080
22081 2003-11-02  Martin Baulig  <martin@ximian.com>
22082
22083         * reflection.h (MonoReflectionGenericInst): Added
22084         `MonoReflectionType *declaring_type'.
22085
22086         * reflection.c (mono_reflection_bind_generic_parameters): Use
22087         `if (tb->parent)' instead of `klass->parent'.
22088
22089 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
22090
22091         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
22092         with an empty ASSEMBLY table.
22093
22094         * reflection.c (mono_image_build_metadata): Avoid using the same loop
22095         variable in the inner and outer loops.
22096
22097 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22098
22099         * metadata.h (mono_metadata_make_token): Put parentheses around macro
22100         argument.
22101
22102         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
22103         
22104         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
22105         icalls. Instead, do everything in managed code. This is needed since
22106         it is hard to restore the original domain etc. in unmanaged code in the
22107         presence of undeniable exceptions.
22108
22109         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
22110         New icalls to push and pop appdomain refs.
22111
22112 2003-10-31  Martin Baulig  <martin@ximian.com>
22113
22114         * class.c (inflate_generic_type): Renamed to
22115         mono_class_inflate_generic_type() and made it public.
22116
22117         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
22118         New interncall.
22119
22120         * loader.c (mono_field_from_memberref): Also set the retklass for
22121         typespecs.
22122
22123         * fielder.c (mono_image_get_inflated_field_token): New static
22124         method; creates a metadata token for an inflated field.
22125         (mono_image_create_token, fixup_method): Added support for
22126         "MonoInflatedField".
22127         (fieldbuilder_to_mono_class_field): New static function.
22128         (mono_reflection_inflate_field): New public function.
22129
22130         * reflection.h
22131         (MonoReflectionGenericInst): Added `MonoArray *fields'.
22132         (MonoReflectionInflatedField): New typedef.     
22133
22134 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
22135
22136         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
22137         for Solaris and other platforms without s6_addr16
22138
22139 2003-10-30  Martin Baulig  <martin@ximian.com>
22140
22141         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
22142         argument instead of two.
22143         (mono_class_inflate_generic_signature): Likewise.
22144         (inflate_generic_header): Likewise.
22145         (mono_class_inflate_generic_method): Likewise.  In addition, if
22146         `ginst->klass' is set, it becomes the new `method->klass'.
22147
22148         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
22149         field.
22150
22151         * reflection.c (encode_generic_method_sig): Write a 0xa as the
22152         first byte. [FIXME]
22153         (method_encode_methodspec): If we have generic parameters, create
22154         a MethodSpec instead of a MethodRef.
22155         (fixup_method): Added support for "MonoInflatedMethod" and
22156         "MonoInflatedCtor".
22157         (mono_image_create_token): Added support for "MonoInflatedMethod"
22158         and "MonoInflatedCtor".
22159         (inflated_method_get_object): New static function; returns a
22160         managed "System.Reflection.MonoInflatedMethod" object.
22161         (mono_reflection_bind_generic_method_parameters): Return a
22162         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
22163         (mono_reflection_inflate_method_or_ctor): Likewise.
22164         (mono_image_get_generic_method_param_info): Initialize unused
22165         fields to zero.
22166         (mono_image_get_generic_param_info): Likewise.
22167
22168         * reflection.h (MonoReflectionInflatedMethod): New public
22169         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
22170         "S.R.MonoInflatedCtor" classes.
22171
22172         * loader.c (method_from_memberref): If we're a TypeSpec and it
22173         resolves to a generic instance, inflate the method.
22174
22175 2003-10-28  Dick Porter  <dick@ximian.com>
22176
22177         * object.c (mono_runtime_run_main): Convert command-line arguments
22178         into utf8, falling back to the user's locale encoding to do so.
22179
22180 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22181
22182         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
22183         at this time.
22184
22185         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
22186
22187         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
22188         up icalls at method definition time. Partially fixes #33569.
22189
22190 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
22191
22192         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
22193         marshalling of arrays. Fixes #50116.
22194
22195         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
22196
22197         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
22198         points to a vtable in the dying appdomain.
22199
22200         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
22201         listeners into unmanaged code inside the lock.
22202
22203         * object.c (mono_class_vtable): Turn off typed allocation in non-root
22204         domains and add some comments.
22205
22206 2003-10-25  Martin Baulig  <martin@ximian.com>
22207
22208         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
22209
22210         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
22211
22212         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
22213         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
22214         currently parsing.  Create the generic class and store it in
22215         `generic_inst->klass' before parsing the type arguments.  This is
22216         required to support "recursive" definitions; see mcs/tests/gen-23.cs
22217         for an example.
22218         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
22219         to support recursive typespec entries.
22220
22221         * class.c (mono_class_setup_parent): If our parent is a generic
22222         instance, we may get called before it has its name set.
22223         (mono_class_from_generic): Splitted into
22224         mono_class_create_from_generic() and mono_class_initialize_generic().
22225
22226 2003-10-25  Martin Baulig  <martin@ximian.com>
22227
22228         * icall.c (ves_icall_Type_BindGenericParameters): Return a
22229         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
22230         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
22231         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
22232
22233         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
22234         (create_typespec): Likewise.
22235         (mono_reflection_bind_generic_parameters): Return a
22236         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
22237         (mono_reflection_inflate_method_or_ctor): New public function.
22238
22239         * reflection.h (MonoReflectionGenericInst): New typedef.        
22240
22241 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
22244         inside the domain lock. Fixes #49993.
22245         
22246         * object.c (mono_class_vtable): When typed allocation is used, 
22247         allocate vtables in the GC heap instead of in the mempool, since the
22248         vtables contain GC descriptors which are used by the collector even
22249         after the domain owning the mempool is unloaded.
22250
22251         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
22252
22253         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
22254         reflect what it does. Also invalidate mempools instead of freeing
22255         them if a define is set.
22256
22257         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
22258         of the appdomain.
22259         
22260         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
22261         hold the finalizable objects in this domain.
22262
22263         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
22264         appdomain.
22265
22266         * appdomain.c (mono_domain_set): New function to set the current
22267         appdomain, but only if it is not being unloaded.
22268
22269         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
22270         appdomain which is being unloaded.
22271         
22272         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
22273         unloading of the root appdomain.
22274
22275         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
22276         icall to execute a method in another appdomain. Intended as a 
22277         replacement for InternalSetDomain, which can confuse the code 
22278         generation in the JIT.
22279
22280         * appdomain.c (mono_domain_is_unloading): New function to determine
22281         whenever an appdomain is unloading.
22282
22283         * appdomain.c (mono_domain_unload): New function to correctly unload
22284         an appdomain.
22285
22286         * assembly.c (mono_assembly_load_references): Check that an assembly
22287         does not references itself.
22288
22289         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
22290         domain manually, it asks the finalizer thread to do it, then waits for
22291         the result. Also added a timeout.
22292
22293         * icall.c: Register the new icalls.
22294
22295         * threads.h threads.c: Export the mono_gc_stop_world and 
22296         mono_gc_start_world functions.
22297         
22298         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
22299         function to fill out the mempool with 0x2a.
22300
22301 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
22302
22303         * reflection.h (MonoReflectionMethodAux): New structure to store
22304         information which is rarely used, thus is not in the MonoMethod
22305         structure.
22306
22307         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
22308         store the aux info.
22309
22310         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
22311         and marshalling info into the aux structure.
22312
22313         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
22314         from the aux structure.
22315
22316         * loader.c (mono_method_get_param_names): Retrieve the param names from
22317         the aux structure.
22318         
22319 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
22320
22321         * exception.h exception.c: Add AppDomainUnloadedException && fix 
22322         warning.
22323
22324 2003-10-21  Dick Porter  <dick@ximian.com>
22325
22326         * socket-io.c
22327         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
22328         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
22329
22330 2003-10-21  Martin Baulig  <martin@ximian.com>
22331
22332         * reflection.c (mono_reflection_bind_generic_parameters):
22333         `klass->parent' is NULL for interfaces.
22334
22335 2003-10-21  Martin Baulig  <martin@ximian.com>
22336
22337         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
22338
22339 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
22340
22341         * exception.c (mono_exception_from_name_msg): New helper function for
22342         creating exceptions and initializing their message field.
22343
22344         * exception.c: Simplify functions using the new helper.
22345
22346         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
22347         New function.
22348
22349         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
22350         mono_raise_exception, since otherwise gcc doesn't generate the function
22351         epilog for raise_exception, confusing the stack unwinding in the JIT.
22352         Fixes #45043.
22353
22354         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
22355         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
22356         Fixes #49499.
22357
22358 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22359
22360         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
22361         utf8.
22362
22363 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
22364
22365         * icall.c: Removed GetUninitializedObject method because
22366           AllocateUninitializedClassInstance does the same.
22367
22368 2003-10-18  Martin Baulig  <martin@ximian.com>
22369
22370         * class.c (inflate_generic_signature): Renamed to
22371         mono_class_inflate_generic_signature() and made it public.
22372         (my_mono_class_from_generic_parameter): New static function; if we
22373         don't already have the generic parameter's MonoClass, create a
22374         very simple one which is just used internally in the runtime and
22375         not passed back to managed code.
22376
22377         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
22378
22379         * metadata.h (MonoMethodSignature): Moved the
22380         `MonoGenericParam *gen_params' to the MonoMethodHeader.
22381         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
22382
22383         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
22384         ves_icall_MonoMethod_GetGenericArguments(); this is now an
22385         interncall on the MonoMethod class, not on MethodInfo.
22386         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
22387         calling mono_reflection_bind_generic_method_parameters() directly.
22388
22389         * loader.c (mono_method_get_signature): If this is a MethodSpec;
22390         return the already computed `method->signature'.
22391         (method_from_methodspec): New static function to load a method
22392         from a MethodSpec entry.
22393         (mono_get_method_from_token): Call the new method_from_methodspec()
22394         for MethodSpec tokens.  
22395         (mono_get_method_from_token): If we're a generic method, load the
22396         type parameters.
22397
22398         * reflection.c (mono_image_get_memberref_token): Allow
22399         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
22400         table.
22401         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
22402         (mono_image_create_token): First check whether it's a generic
22403         method (so we'd need to create a MethodSpec), then do the other
22404         two alternatives.
22405         (mono_reflection_bind_generic_method_parameters): Return a
22406         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
22407         called directly from the interncall.
22408
22409 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
22410
22411         * reflection.c (load_public_key): Move loading of the public key
22412         into managed code.
22413
22414         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
22415
22416         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
22417         fields.
22418
22419         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
22420         culture, hash_alg and public_key. Fixes #49555.
22421
22422 2003-10-17  Martin Baulig  <martin@ximian.com>
22423
22424         * class.h (MonoGenericInst): Moved this declaration here and added
22425         `MonoMethod *generic_method'.
22426
22427         * icall.c
22428         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
22429         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
22430
22431         * metadata.c (mono_metadata_type_equal): Two types of
22432         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
22433         index; ie. don't compare the address of the `MonoGenericParam'
22434         structure.
22435         (mono_metadata_load_generic_params): Removed the `MonoMethod
22436         *method' argument.
22437
22438         * metadata.h (MonoGenericInst): Moved declaration to class.h.
22439         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
22440
22441         * reflection.c (method_encode_signature): Encode the number of
22442         generic parameters.
22443         (encode_generic_method_sig): New static function.
22444         (method_encode_methodspec): New static function; creates an entry
22445         in the MethodSpec table for a generic method.
22446         (mono_image_get_methodspec_token): New static function.
22447         (mono_image_create_token): Call mono_image_get_methodspec_token()
22448         for generic methods.
22449         (mono_reflection_bind_generic_method_parameters): New public
22450         function.  Instantiates a generic method.
22451
22452 2003-10-16  Martin Baulig  <martin@ximian.com>
22453
22454         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
22455         *gen_params' here from MonoMethodHeader.
22456
22457         * metadata.c (mono_metadata_parse_method_signature): If we have
22458         generic parameters, initialize `method->gen_params' and then set
22459         the correct `type->data.generic_param' in all the parameters.
22460
22461 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22462
22463         * threads.c (mono_threads_get_default_stacksize): New function to 
22464         return the default stacksize.
22465
22466         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
22467         termination of the finalizer thread, since the previous method had
22468         race conditions. Fixes #49628.
22469
22470         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
22471         as for the other managed threads.
22472
22473 2003-10-16  Martin Baulig  <martin@ximian.com>
22474
22475         * class.c (inflate_generic_signature): Copy `generic_param_count'
22476         and `gen_params'.
22477
22478         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
22479         New interncall.
22480
22481         * metadata.c (mono_metadata_parse_method_signature): Actually set
22482         the `method->generic_param_count' here.
22483         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
22484
22485 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22486
22487         * object.h: Add a new field to TypedRef to simplify the implementation
22488         of the REFANY opcodes in the JIT.
22489
22490         * icall.c: Make use of the new field.
22491
22492         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
22493         dynamically.
22494
22495 2003-10-15  Martin Baulig  <martin@ximian.com>
22496
22497         * class.c (mono_class_from_gen_param): Renamed to
22498         mono_class_from_generic_parameter() and moved most of the
22499         functionality from mono_reflection_define_generic_parameter()
22500         here; ie. we create a "real" class here.
22501         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
22502         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
22503         previously been called.
22504
22505         * class.h (MonoGenericParam): Moved the declaration of this struct
22506         here from metadata.h and added `MonoMethod *method'.
22507
22508         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
22509         interncall.
22510
22511         * loader.c (mono_get_method_from_token): If we have any generic
22512         parameters, call mono_metadata_load_generic_params() to read them
22513         from the MONO_TABLE_GENERICPAR.
22514
22515         * metadata.c (mono_metadata_load_generic_params): Added
22516         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
22517
22518         * metadata.h (MonoMethodSignature): Replaced
22519         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
22520         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
22521
22522         * reflection.c (mono_reflection_define_generic_parameter): Moved
22523         most of the functionality into the new
22524         mono_class_from_generic_parameter(); set the `method' field if
22525         we're a method parameter.       
22526
22527 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
22528
22529         * marshal.c (emit_struct_conv): if native size is 0
22530         emit no code.
22531
22532 2003-10-14  Martin Baulig  <martin@ximian.com>
22533
22534         * icall.c: The generics API has changed in the spec since it was
22535         added to System.Type; these modifications make it match the spec
22536         again.
22537         (ves_icall_Type_GetGenericParameters): Renamed to
22538         `ves_icall_Type_GetGenericArguments'.
22539         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
22540         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
22541         `ves_icall_MonoType_get_HasGenericArguments'.
22542         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
22543         `ves_icall_MonoType_get_IsGenericParameter'.
22544         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
22545         this is no interncall anymore.
22546         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
22547         `ves_icall_TypeBuilder_get_IsGenericParameter'.
22548
22549 2003-10-14  Martin Baulig  <martin@ximian.com>
22550
22551         * reflection.c (mono_reflection_bind_generic_parameters): Also
22552         inflate generic methods if we're reading the class from IL.
22553
22554 2003-10-13  Martin Baulig  <martin@ximian.com>
22555
22556         * reflection.c (mono_reflection_define_generic_parameter): This
22557         method isn't called directly from the icall anymore; take a
22558         `MonoReflectionAssemblyBuilder *' so we can use this for type and
22559         method generic parameters.
22560         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
22561         (method_builder_encode_signature): Encode generic parameters.
22562         (mono_image_get_method_info): Write generic params to the
22563         MONO_TABLE_GENERICPARAM table.
22564
22565         * reflection.h (MonoReflectionMethodBuilder): Added
22566         `MonoArray *generic_params'.
22567
22568         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
22569
22570         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
22571         wrapper for mono_reflection_define_generic_parameter().
22572         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
22573
22574 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
22575
22576         * marshal.h: Add missing function to fix build.
22577
22578         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
22579         the SetLastError pinvoke attribute.
22580
22581         * marshal.c (mono_marshal_set_last_error): New helper function called
22582         by the generated code.
22583         
22584         * marshal.c (mono_mb_emit_branch): New helper function.
22585
22586         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
22587
22588         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
22589         classes as parameters and return values of delegates. Fixes #29256. 
22590
22591 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
22592
22593         * locales.c: use gint32 in non HAVE_ICU case
22594
22595 2003-10-11  Martin Baulig  <martin@ximian.com>
22596
22597         * mono-debug.c (mono_debug_add_method): Added a workaround for
22598         bug #48591.
22599
22600 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22601
22602         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
22603         delegates passed to native code must use the STDCALL calling 
22604         convention. Fixes #35987.
22605
22606 2003-10-10  Martin Baulig  <martin@ximian.com>
22607
22608         * class.c (inflate_generic_type): If we're inflating for a generic
22609         type instance (and not for a generic method), return
22610         MONO_TYPE_MVAR unchanged.
22611
22612 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22613
22614         * string-icalls.c: Join ignores null strings in the source array.
22615         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
22616         * threads.c: GetAvailableTheads is slightly more accurate.
22617
22618 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
22619
22620         * threads.h threads.c : add mono_threads_set_default_stacksize
22621         and pass default to CreateThread calls.
22622
22623 2003-10-09  Dick Porter  <dick@ximian.com>
22624
22625         * icall.c:
22626         * locales.h:
22627         * locales.c: Internal calls for constructing CultureInfo and
22628         related objects from libicu (if its available.)
22629
22630 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
22633
22634 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22635
22636         * threadpool.c: added an argument to async_invoke_thread that is the
22637         item to process, pass the MonoAsyncResult to the thread start function
22638         when creating a new thread. This way we don't need to acquire any lock
22639         when we're creating a new thread. Readded a semaphore for faster
22640         response times (instead of that Sleep i added).
22641
22642 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
22643
22644         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
22645         get daylight change dates better on Windows, fix handling
22646         of platforms without tm_gmtoff.
22647
22648 2003-10-06  Martin Baulig  <martin@ximian.com>
22649
22650         * class.c (inflate_generic_method): Renamed to
22651         mono_class_inflate_generic_method() and made public.
22652         (mono_class_init): Don't inflate the generic methods here.
22653         (mono_class_from_generic): Added `gboolean inflate_methods'
22654         argument.  Inflate the methods here.
22655
22656         * loader.c (mono_method_get_param_names): Ignore instances of
22657         generic types for the moment.
22658
22659         * reflection.c (fixup_method): Added support for inflated methods.
22660         (mono_image_create_token): Use mono_image_get_methodref_token()
22661         for inflated methods.
22662         (mono_custom_attrs_from_param): Ignore instances of generic types
22663         for the moment.
22664         (mono_reflection_bind_generic_parameters): New public function.
22665         Moved all the functionality from
22666         ves_icall_Type_BindGenericParameters() here and added support for
22667         dynamic types.
22668         (mono_reflection_define_generic_parameter): Initialize
22669         `klass->methods' here.
22670
22671         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
22672         functionality into mono_reflection_define_generic_parameter().
22673         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
22674         TypeBuilder, return that TypeBuilder.
22675
22676 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22677
22678         * appdomain.c: removed mono_delegate_semaphore.
22679
22680         * threadpool.c:
22681         (mono_thread_pool_add): moved hash table creation inside and the thread 
22682         creation outside of the critical region.
22683         (mono_thread_pool_finish): removed obsolete code.
22684         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
22685         continue or exit the thread depending on the queue.
22686
22687 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
22688
22689         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
22690         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
22691         handle more bool marshalling options
22692
22693 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
22694
22695         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
22696         arrays of structs. Also add a more descriptive error message when
22697         a structure member is marshalled as LPArray.
22698
22699 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * marshal.c (mono_marshal_get_native_wrapper): Add support for
22702         marshalling arrays of complex types. Fixes #29098. Also remove an
22703         usused and incomplete function.
22704
22705 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
22706
22707         * gc.c: report heap_size - free_bytes as total memory allocated
22708         (bug#49362).
22709
22710 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22711
22712         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
22713         fix timezone handling problems on Windows.
22714         
22715         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
22716         asserts when the year is outside the range handled by ms the functions.
22717
22718         * class.c (setup_interface_offsets): If the class is an interface,
22719         fill out its interface_offsets slot.
22720
22721 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22722
22723         * threadpool.c: mark threadpool threads as background.
22724
22725 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
22726
22727         * decimal.c - define DECINLINE to nothing if not using GCC
22728
22729 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22730
22731         * assembly.c: More refcount fixes.
22732
22733 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22734
22735         * string-icalls.c: if we're not trimming, return the same string.
22736         When not splitting, don't create a new string.
22737
22738 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22739
22740         * image.c:
22741         (mono_image_open): increment the ref_count inside the critical section.
22742
22743 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
22744
22745         * image.c (mono_image_open): Fix reference counting bug.
22746
22747 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
22748
22749         * marshal.c (mono_marshal_type_size) struct alignment changed for 
22750         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
22751         64bits. Avoid leak in mono_marshal_get_native_wrapper when
22752         mono_lookup_pinvoke_call throws.        
22753
22754 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22755
22756         * reflection.c (mono_reflection_parse_type): Fix #49114.
22757
22758         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
22759         temporary workaround for cygwin header problem.
22760
22761         * object.c (mono_object_isinst): Synchronize this with the code
22762         generated by the JIT for casts.
22763
22764 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22765
22766         * reflection.c (encode_type): Fix #38332.
22767
22768 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22769
22770         * marshal.c (mono_marshal_method_from_wrapper): New function to return
22771         the original method from the wrapper method.
22772
22773 2003-09-25  Martin Baulig  <martin@ximian.com>
22774
22775         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
22776         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
22777         (ves_icall_Type_get_IsGenericInstance): New interncall.
22778
22779 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
22780
22781         * object.c: fix cast warning in big endian code.
22782
22783 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
22784
22785         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
22786         
22787 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22788
22789         * assembly.c: don't call check_env from mono_assembly_load. It's
22790         already done once in mono_assemblies_init and may cause headaches when
22791         multiple threads are loading assemblies.
22792
22793 2003-09-19  Martin Baulig  <martin@ximian.com>
22794
22795         * reflection.c (mono_reflection_define_generic_parameter): Don't
22796         allocate `klass->methods', set `klass->flags' to
22797         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
22798
22799 2003-09-18  Martin Baulig  <martin@ximian.com>
22800
22801         * class.c (mono_class_init): Don't create `class->methods' if it's
22802         already initialized.
22803
22804         * metadata.c (mono_metadata_load_generic_params): Make this
22805         actually work.
22806
22807         * reflection.c (mono_reflection_define_generic_parameter): Set
22808         parent class and interfaces from the constraints.
22809
22810         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
22811         to keep this struct in sync with the declaration in TypeBuilder.cs.
22812
22813 2003-09-17  Martin Baulig  <martin@ximian.com>
22814
22815         * metadata.h (MonoType): Replaced the data's `int type_param'
22816         field with `MonoGenericParam *generic_param'.
22817         (MonoGenericParam): Added `MonoClass *klass'.
22818
22819         * class.c (mono_class_from_gen_param): Removed the
22820         `MonoImage *image' and `int type_num' arguments.
22821
22822         * metadata.c (mono_metadata_parse_generic_param): New static
22823         method; creates a MonoGenericParam which just contains the index.
22824         (do_mono_metadata_parse_type): Call
22825         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
22826         MONO_TYPE_MVAR.
22827
22828         * reflection.c (mono_image_typedef_or_ref): Generic type
22829         parameters may be in the same assembly, but never use a typedef
22830         for them.
22831         (mono_reflection_define_generic_parameter): We're now creating a
22832         "real" class for the type parameter; it's now safe to call
22833         mono_class_from_mono_type() on the class'es type, it'll do the
22834         right thing.
22835
22836 2003-09-16  Martin Baulig  <martin@ximian.com>
22837
22838         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
22839         `symfile->range_entry_size' and `symfile->class_entry_size' here;
22840         the `symfile' data structure must be fully initialized before it
22841         gets added to the table.
22842
22843 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22844
22845         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
22846
22847         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
22848         class init trampolines.
22849
22850 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22851
22852         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
22853         to the built-in profiler to turn off time and allocation profiling
22854         respectively.
22855
22856 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22857
22858         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
22859         g_direct_equal.
22860
22861         * debug-helpers.c (mono_method_full_name): Print the wrapper type
22862         in human readable form.
22863
22864 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22865
22866         * reflection.c icall.c: Fixed warnings.
22867
22868         * image.c (load_class_names): Use a temporary hash table to hold the
22869         namespaces in order to avoid doing many string comparisons.
22870
22871         * image.h: Fix typo.
22872
22873         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
22874         Pass NULL instead of g_direct_equal to the GHashTable constructor 
22875         since the NULL case is short-circuited inside g_hash_table_lookup, 
22876         leading to better performance.  
22877
22878         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
22879         obtain the first custom attribute for a given index. Depends on the
22880         CustomAttribute table being sorted by the parent field.
22881
22882         * reflection.c (mono_custom_attrs_from_index): Use the new function 
22883         for better performance.
22884
22885 2003-09-07  Martin Baulig  <martin@ximian.com>
22886
22887         * class.c (mono_class_init): If we're a generic instance, inflate
22888         all our methods instead of loading them from the image.
22889         (mono_class_from_generic): Set `class->methods = gklass->methods'.
22890
22891 2003-09-07  Martin Baulig  <martin@ximian.com>
22892
22893         * mono-debug-debugger.c: Added support for constructors.
22894
22895 2003-09-06  Martin Baulig  <martin@ximian.com>
22896
22897         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
22898         New interncall.
22899
22900         * reflection.c (mono_reflection_setup_generic_class): Call
22901         ensure_runtime_vtable() to create the vtable.
22902
22903 2003-09-05  Martin Baulig  <martin@ximian.com>
22904
22905         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
22906         MONO_TYPE_MVAR.
22907
22908 2003-09-04  Martin Baulig  <martin@ximian.com>
22909
22910         * reflection.c (mono_reflection_define_generic_parameter): Generic
22911         parameters start with zero.
22912
22913 2003-09-04  Martin Baulig  <martin@ximian.com>
22914
22915         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
22916
22917         * reflection.h (MonoReflectionGenericParam): New typedef.
22918         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
22919         the generic parameters from the managed TypeBuilder.
22920
22921         * reflection.c (mono_reflection_define_generic_parameter): New function.
22922         (mono_reflection_create_runtime_class): Encode generic parameters.
22923         (mono_reflection_setup_generic_class): New function; this is
22924         called after adding adding all generic params to the TypeBuilder.
22925         (encode_type): Added MONO_TYPE_VAR.
22926
22927 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22928
22929         * class.h class.c (mono_class_needs_cctor_run): Moved this method
22930         here from the JIT.
22931
22932         * assembly.h assembly.c: Moved the AOT loading code into an assembly
22933         load hook.
22934
22935 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
22936
22937         * reflection.h reflection.c class.h class.c: Delete duplicate 
22938         definition of mono_type_get_name () from reflection.c and export the
22939         one in class.c.
22940
22941         * class.c: Class loading fixes from Bernie Solomon 
22942         (bernard@ugsolutions.com).
22943
22944         * reflection.c: Endianness fixes from Bernie Solomon 
22945         (bernard@ugsolutions.com).
22946         
22947 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22948
22949         * assembly.h assembly.c: Define a file format version for AOT
22950         libraries.
22951         
22952         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
22953
22954         * appdomain.h (MonoJitInfo): New field to determine whenever the
22955         code is domain neutral.
22956         
22957 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
22958
22959         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
22960
22961 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22962
22963         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
22964         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
22965         Avoid caching the result since strings must be domain specific. Fixes
22966         #48050.
22967
22968 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22969
22970         * marshal.c (mono_marshal_init): Make this callable multiple times
22971         since it is hard to find a correct place to call it.
22972
22973         * object.c (mono_runtime_class_init): Execute static constructors in
22974         the correct appdomain.
22975
22976         * image.c (build_guid_table): Handle the case when multiple images have
22977         the same GUID.
22978
22979 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22980
22981         * icall.c: added a couple of icalls for System.Web.
22982
22983 2003-08-28  Martin Baulig  <martin@ximian.com>
22984
22985         * icall.c (ves_icall_Type_BindGenericParameters): Use
22986         `klass->generic_inst' instead of `&klass->byval_arg' in the
22987         mono_type_get_object() call.  The returned type must be
22988         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
22989
22990 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22991
22992         * NOTES: New file.
22993
22994         * object.c (mono_class_proxy_vtable): Make it thread safe.
22995
22996         * pedump.c: Fix warning.
22997
22998         * object.c appdomain.h: Get rid of metadata_section. 
22999         It is no longer needed and it was causing deadlocks with domain->lock.
23000
23001         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
23002
23003 2003-08-26  Martin Baulig  <martin@ximian.com>
23004
23005         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
23006
23007 2003-08-26  Martin Baulig  <martin@ximian.com>
23008
23009         * pedump.c (main): Call mono_metadata_init(),
23010         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
23011         and mono_loader_init().
23012
23013 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * loader.h: Add missing include to fix build.
23016
23017         * image.h: mono_image_load_references is no more.
23018
23019         * assembly.c: Reworked assembly loading to make it really thread safe.
23020         After these changes, the assembly returned by mono_assembly_open is
23021         fully initialized, i.e. all its references assemblies are loaded.
23022
23023         * assembly.c (mono_image_load_references): Renamed to 
23024         mono_assembly_load_references, and made private, since clients no
23025         longer need to call it.
23026
23027         * class.c: Removed calls to mono_assembly_load_references, since it was
23028         a source of deadlocks.
23029
23030         * loader.h loader.c class.h class.c: Protect data structures using a 
23031         new lock, the loader lock.
23032
23033         * class.c (mono_class_setup_vtable): Create temporary hash tables and
23034         GPtrArrays only when needed.
23035
23036         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
23037         into empty structures by mcs. Fixes pinvoke7.cs.
23038         
23039         * domain.c (mono_init): Call a new initialization function.
23040
23041         * appdomain.c (mono_runtime_init): Call the new initializer function
23042         of the marshal module.
23043
23044         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
23045         inserted into empty structures by mcs. Fixes pinvoke7.cs.
23046
23047         * marshal.h marshal.c: Added locks around the wrapper caches to make
23048         this module thread safe.
23049
23050         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
23051         this argument. Fixes pinvoke1.exe.
23052
23053 2003-08-25  Lluis Sanchez <lluis@ximian.com>
23054
23055         * object.h: Added call_type field to MonoMethodMessage and the corresponding
23056         enumeration of values. Removed fields to store remote call output values in
23057         MonoAsyncResult. Not needed any more.
23058         * object.c: Initialize call_type and async_result fields in mono_message_init.
23059         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
23060         dispatching the message.
23061         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
23062         async call to finish. To do it use a message with EndInvoke call type.
23063
23064 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23065
23066         * loader.h loader.c (mono_method_hash_marhal_info): New function which
23067         determines whenever a method has marshalling info.
23068
23069 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23070
23071         * assembly.c: fix the build on windows.
23072
23073 2003-08-22 Lluis Sanchez <lluis@ximian.com>
23074
23075         * object.cs: Fixed bug #47785.
23076
23077 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
23078
23079         * string-icalls.c (StringReplace): If their are no occurances of
23080         the old string found return a reference to the supplied
23081         string. This saves some memory and matches MS behavoir.
23082         
23083 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23084
23085         * socket-io.c: fixed compilation for systems that define AF_INET6
23086         and don't define SOL_IP/SOL_IPV6.
23087
23088 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
23089
23090         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
23091         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
23092
23093         * rawbuffer.c rawbuffer.h: Make this module thread safe.
23094
23095         * domain.c: Make this module thread safe.
23096
23097         * domain.c (mono_init): Call new initialization function.
23098
23099         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
23100         reference types too. Fixes #38812.
23101
23102         * image.c (mono_image_init): Fixed warnings.
23103
23104         * class.c (mono_class_from_typeref): Handle assembly load failure
23105         correctly.
23106
23107         * appdomain.c (add_assemblies_to_domain): Handle the case when
23108         the references of an assembly are not yet loaded.
23109
23110         * metadata.c image.c assembly.c: Moved initialization of global
23111         variables to a separate function called at startup since lazy 
23112         initialization of these variables is not thread safe.
23113         
23114         * image.c assembly.c: Made this module thread safe by adding locks in 
23115         the appropriate places.
23116
23117         * domain.c (mono_init): Call the new initialization functions of the
23118         three modules.
23119
23120 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
23121
23122         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
23123           make a direct call. It is proxy's work to make the call asynchronous.
23124           mono_delegate_end_invoke(): If the targe is a proxy, just collect
23125           the return values.
23126         * object.cs: mono_method_call_message_new(): read AsyncResult and
23127           state object from parameters list, if this info is requested.
23128         * object.h: Added fields to store remote call output values in
23129           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
23130
23131 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23132
23133         * object.h: add needed fields to MonoThread.
23134         * threads.c, threads.h: allow registering a function to cleanup data
23135         allocated per thread by the JIT.
23136
23137 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23138
23139         * loader.h: portability fix by Bernie Solomon
23140         * <bernard@ugsolutions.com>.
23141
23142 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
23143
23144         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
23145         return a MonoArray. This simplifies the code and also ensures that
23146         the cache allways contains an object reference as a value.
23147
23148         * icall.c (ves_icall_get_parameter_info): Simplified using the new
23149         function.
23150
23151 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23152
23153         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
23154         fixes a problem with byte ordering when getting the address family for
23155         a socket.
23156
23157 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
23158
23159         * .cvsignore: Added monosn.
23160
23161         * reflection.h reflection.c loader.c: Added support for parameter
23162         marshalling to dynamically created types. Fixes #47295.
23163
23164 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23165
23166         * rand.c: remove useless warnings.
23167
23168 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23169
23170         * class.c: implemented ldtoken for methods and fieldrefs.
23171
23172 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23173
23174         * threadpool.c: when mono_async_invoke was called, no one took care of
23175         monitoring the queue. So if the method invoked took some time and we
23176         got new async invoke requests after 500 ms (the thread created waited
23177         that long in WaitForSingleObject), the new async invoke was not called
23178         until the previous one finished.
23179
23180         This is fixed now. Thanks to Totte for helping with it.
23181
23182 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23183
23184         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
23185
23186 2003-08-11  Martin Baulig  <martin@ximian.com>
23187
23188         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
23189
23190 2003-08-06  Martin Baulig  <martin@ximian.com>
23191
23192         * mono-debug-debugger.c: Added support for static fields,
23193         properties and methods.
23194
23195 2003-08-06  Martin Baulig  <martin@ximian.com>
23196
23197         * mono-debug-debugger.c: Don't store the MonoString's vtable to
23198         make this work for applications with multiple application domains.
23199
23200 2003-08-04  Martin Baulig  <martin@ximian.com>
23201
23202         * mono-debug-debugger.c: Completely reworked the type support; the
23203         most important thing is that we're now just using one single
23204         `MonoType' instance per type.
23205
23206 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
23207
23208         * mono-endian.h, mono-endian.c, icall.c: Added icall
23209         ves_icall_System_Double_AssertEndianity to assert double word endianity
23210         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
23211
23212 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23213
23214         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
23215         support, icalls and fixes.
23216
23217 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
23218
23219         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
23220         classes that are a punctuation character in .NET is not the same a
23221         g_unichar_ispunct.
23222
23223 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23224
23225         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
23226
23227 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
23228
23229         * icall.c: Add new MemCopy internalcall.
23230         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
23231         Simplified code; It is not necessary to handle all the cases here,
23232         as the C# code takes care of it.  Only handle the case of the name
23233         resource embedded into the assembly.
23234
23235         Changed signature to return the data pointer and the size of the
23236         data. 
23237
23238 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
23239
23240         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
23241         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
23242
23243 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
23244
23245         * socket-io.c: ignore EINTR error in select.
23246
23247 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
23248
23249         * class.h, class.c: removed unused subclasses field in MonoClass.
23250
23251 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
23252
23253         * icall.c: improve fix of get_base_definition(). If the parent class
23254           doesn't have the mehod, look at the parent of the parent.
23255         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
23256           to check if a parameter is an in or out parameter
23257           (PARAM_ATTRIBUTE_IN is not set by default).
23258           mono_method_return_message_restore(): Use mono_class_value_size to
23259           get the size of a value type. mono_type_stack_size (parameterType)
23260           does not return the correct value if parameterType is byRef.
23261           mono_load_remote_field(), mono_load_remote_field_new(),
23262           mono_store_remote_field(), mono_store_remote_field_new():
23263           raise exception if the remote call returns an exception.
23264
23265 2003-07-28  Martin Baulig  <martin@ximian.com>
23266
23267         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
23268         method.  This is a wrapper around mono_runtime_invoke() which
23269         boxes the instance object if neccessary.
23270
23271 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23272
23273         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
23274         metadata.h, row-indexes.h, verify.c: first cut of generics support.
23275
23276 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23277
23278         * icall.c: disable mcs bug workaround.
23279
23280 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23281
23282         * object.c (mono_runtime_class_init): Take the metadata_section
23283         mutex before obtaining the domain mutex.
23284
23285         * appdomain.h: Added definition of metadata_section mutex here. 
23286
23287         * object.c: define metadata_mutex here.
23288
23289 2003-07-24  Ravi Pratap  <ravi@ximian.com>
23290
23291         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
23292         fixed.
23293
23294 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
23295
23296         * reflection.c: Fix bug #46669
23297
23298 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23299
23300         * exception.c:
23301         * exception.h:
23302         * icall.c:
23303         * object.h: fill in the type name for TypeLoadException.
23304
23305 2003-07-23  Ravi Pratap  <ravi@ximian.com>
23306
23307         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
23308         relationship between TypeBuilders while compiling corlib) and bug
23309         45993 (Array types returned from the runtime while compiling
23310         corlib were from the loaded corlib).
23311
23312 2003-07-22  Martin Baulig  <martin@ximian.com>
23313
23314         * mono-debug-debugger.c: Reworked the type support a bit more;
23315         distinguish between types and classes.
23316
23317 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
23318
23319         * icall.c: add IsArrayImpl icall.
23320
23321 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
23322
23323         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
23324         initializing real_size only once. Also fix bug #46602.
23325
23326 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
23327
23328         * object.c: Renamed mono_metadata_section to metadata_section.
23329
23330 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
23331
23332         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
23333           empty array if the type is an array. Fixed.
23334           ves_icall_MonoMethod_get_base_definition: if the base method
23335           is abstract, get the MethodInfo from the list of methods of
23336           the class.
23337         * reflection.c: ParameterInfo.PositionImpl should be zero-based
23338           and it was 1-based. Fixed in mono_param_get_objects.
23339
23340 2003-07-20  Martin Baulig  <martin@ximian.com>
23341
23342         * mono-debug.h: Set version number to 31.
23343         (mono_debug_init): Added `MonoDomain *' argument.
23344
23345         * mono-debug-debugger.c: Reworked the type support; explicitly
23346         tell the debugger about builtin types; pass the `klass' address to
23347         the debugger.
23348
23349 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
23350
23351         * image.c: Allow new metadata tables to be loaded without a
23352         warning. Also update the warning message to give the new constant value.
23353                 
23354 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23355
23356         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
23357         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
23358         array type representation changes.
23359
23360 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23361
23362         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
23363         on Environment.Exit () call.
23364
23365 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23366
23367         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
23368         requires a matching corlib.
23369
23370 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
23371
23372         * Changelog: My editor decided to add a CR to each line. Sorry about that.
23373           Committed again without the CRs.
23374         
23375 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
23376
23377         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
23378           getting it from the "this" socket instance. Did not work
23379           if the socket is a subclass of Socket.
23380           Also fixed bug #35371.
23381
23382 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23383
23384         * metadata.c: fixed size for TypedByRef.
23385         * loader.c: when searching for a method, consider the vararg amrker.
23386         * unicode.c, decimal.c: constify some arrays.
23387
23388 2003-07-15  Dick Porter  <dick@ximian.com>
23389
23390         * socket-io.c: Fixed compilation for gcc < 3.2.
23391
23392         Fixed compilation for machines that don't have AF_INET6 (thanks to
23393         Bernie Solomon <bernard@ugsolutions.com> for that part.)
23394
23395         Fixed compile warnings.
23396         
23397         Fixed formatting and line endings.
23398
23399 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
23400
23401         * socket-io.h:
23402         * socket-io.c: Added IPv6 support.
23403
23404 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
23405
23406         * class.c (mono_class_is_assignable_from): New function to implement
23407         the is_assignable_from logic. Used by mono_object_isinst, 
23408         Type::IsAssignableFrom () and the interpreter.
23409
23410         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
23411         Object, even interfaces.
23412         
23413         * object.c (mono_object_isinst): Implement in terms of 
23414         is_assignable_from.
23415
23416         * icall.c (ves_icall_type_is_assignable_from): New icall.
23417
23418 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
23419
23420         * domain.c (foreach_domain): fix compiler warning.
23421
23422 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
23423
23424         * image.c (load_metadata_ptrs): use g_strndup because strndup is
23425         not available on all plattforms
23426
23427 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
23428
23429         * image.h image.c: Store the metadata version string in MonoImage.
23430         * icall.c: New icall to retrieve the image version.
23431         * reflection.c (create_dynamic_image): Fill in the image version field
23432         * reflection.c (build_compressed_metadata): Use the image version
23433         from the image structure.
23434
23435 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23436
23437         * appdomain.c: modified comment.
23438         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
23439         That will be its last iteration when mono_gc_cleanup is called from
23440         mono_runtime_cleanup and before the domain is unloaded.
23441
23442         Fixes bug #45962.
23443
23444 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
23445
23446         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
23447         attributes.
23448
23449 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23450
23451         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
23452         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
23453         Bernie Solomon <bernard@ugsolutions.com>.
23454
23455 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23456
23457         * object.c, object.h: provide mono_object_new_fast() for faster
23458         allocation in some special cases.
23459
23460 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23461
23462         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
23463         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
23464
23465 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23466
23467         * threadpool.c: fix leaks.
23468
23469 2003-07-01  Dick Porter  <dick@ximian.com>
23470
23471         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
23472         using MonoGHashTables.  Fixes threadpool bug posted to list.
23473
23474 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
23475
23476         * image.h, image.c: added support to load an assembly from a byte array.
23477         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
23478         assembly bundle support.
23479
23480 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
23481
23482         * threadpool.c (mono_thread_pool_add): keep a reference to the
23483         AsyncResult to prevent GC
23484
23485 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23486
23487         * class.c: leak fix.
23488
23489 2003-06-25  Dick Porter  <dick@ximian.com>
23490
23491         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
23492         for the async object, the WaitHandle object will close the handle.
23493         Fixes bug 45321.
23494
23495 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23496
23497         * class.c: in mono_array_class_get (), lookup from the hash with the
23498         same type we insert: this works around a bug in
23499         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
23500         lluis. The real fix will have to wait for after the release.
23501
23502 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23503
23504         * icall.c: fix memory leak when getting type members.
23505
23506 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
23507
23508         * reflection.c: added more pubtoken special cases.
23509
23510 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23511
23512         * class.c: handle field offset correctly when class size
23513         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
23514
23515 2003-06-20  Martin Baulig  <martin@ximian.com>
23516
23517         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
23518         *image' field.
23519
23520 2003-06-20  Martin Baulig  <martin@ximian.com>
23521
23522         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
23523
23524 2003-06-20  Martin Baulig  <martin@ximian.com>
23525
23526         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
23527         just distinguish between variables in registers and variables at
23528         an offset relative to a register.
23529
23530 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23531
23532         * icall.c: #ifdef out latest changes until mcs is fixed.
23533
23534 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23535
23536         * icall.c: return members in metadata order.
23537
23538 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23539
23540         * icall.c: avoid infinite loop in GetTimeZoneData.
23541
23542 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23543
23544         * icall.c: added Marshal.Prelink/All icalls.
23545
23546 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
23547
23548         * object.c, object.h: fix warnings and do some overflow checking
23549         when creating arrays.
23550
23551 2003-06-17  Dick Porter  <dick@ximian.com>
23552
23553         * file-io.h:
23554         * file-io.c: File attributes need to be tweaked slightly when
23555         passed from the managed to the w32 world.
23556
23557 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23558         * profiler.h profiler-private.h profiler.c: Rework last patch
23559         based on suggestion by Paolo.
23560         
23561 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23562
23563         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
23564         instruction level coverage data collection.
23565         * profiler.h profiler.c (: Added new callback function which can be
23566         used by the profiler to limit which functions should have coverage
23567         instrumentation.
23568         * profiler.c (mono_profiler_load): Call g_module_build_path to
23569         generate the file name of the profiler library.
23570
23571 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23572
23573         * profiler.c, profiler.h, profiler-private.h: added basic block 
23574         coverage profiling API.
23575
23576 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
23577
23578         * reflection.c (mono_reflection_create_runtime_class): Add support
23579         for events in dynamically generated code.
23580
23581         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
23582         not allocated.
23583
23584 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23585
23586         * icall.c: when getting timezone info, return reasonable values if we
23587         can't get the actual data.
23588
23589 2003-06-14  Dick Porter  <dick@ximian.com>
23590
23591         * threads.c (start_wrapper): Remove the reference to the thread
23592         object in the TLS data, so the thread object can be finalized.
23593         This won't be reached if the thread threw an uncaught exception,
23594         so those thread handles will stay referenced :-( (This is due to
23595         missing support for scanning thread-specific data in the Boehm GC
23596         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
23597
23598 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
23599
23600         * reflection.c: ensure streams and tables are first allocated with
23601         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
23602
23603 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23604
23605         * icall.c: fixed GetElementType for byrefs (bug# 44792).
23606
23607 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
23608
23609         * reflection.c (mono_reflection_create_runtime_class): Add support for
23610         properties to dynamically created classes.
23611         * reflection.c: Fix a few places where non-MonoObjects were inserted
23612         into the tokens hashtable.
23613
23614 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23615
23616         * object.c: some support to handle out of memory exceptions.
23617
23618 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
23619
23620         * marshal.c (mono_marshal_get_native_wrapper): support reference
23621         return types
23622
23623 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23624
23625         * object.h, object.c: more portability stuff from Bernie Solomon.
23626         Unexport mono_object_allocate(). Added mono_object_unbox ().
23627         Set exitcode when an unhandled exception is thrown.
23628
23629 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
23630
23631         * marshal.c (mono_marshal_get_native_wrapper): use custom
23632         marshaler for return types.
23633
23634 2003-06-10  Dick Porter  <dick@ximian.com>
23635
23636         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
23637         ip_mreq is available
23638
23639 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23640
23641         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
23642         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
23643         by Bernie Solomon <bernard@ugsolutions.com>.
23644
23645 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
23646
23647         * gc.c (mono_gc_init): Avoid error message on shutdown when
23648         GC_DONT_GC=1 is used.
23649
23650         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
23651         New icall to return the GUID of a module.
23652
23653 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23654
23655         * class.c: ensure instance size always includes the parent's size
23656         even whem class size is set explicitly (fixes bug#44294).
23657
23658 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23659
23660         * profiler.h, profiler.c: made the simple profiler thread-safe,
23661         get more accurate timing info. Allow the loading of an
23662         externally-developed profiler module.
23663
23664 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
23665
23666         * marshal.c (mono_marshal_get_native_wrapper): improved
23667         class/byref arguments.
23668         (mono_marshal_get_native_wrapper): better string marshaling support.
23669
23670 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23671
23672         * class.c: ensure .pack and .size are handled correctly and
23673         simplified layout of static fields.
23674
23675 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23676
23677         * appdomain.c
23678         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
23679
23680         * loader.c (mono_lookup_pinvoke_call): look for modules in the
23681         current directory (fix bug 44008)
23682
23683 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
23684
23685         * marshal.c (mono_marshal_get_native_wrapper): started support for
23686         custom marshalers.
23687         (mono_delegate_to_ftnptr): consider marshalling specifications
23688
23689 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23690
23691         * reflection.c, reflection.h: emit custom marshal info.
23692
23693 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23694
23695         * object.c: free the GError.
23696         * icall.c: added CloseEvent_internal.
23697         * threads.[ch]:
23698         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
23699         call.
23700
23701 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
23702
23703         * loader.c (mono_method_get_signature): Add support for dynamic
23704         assemblies.
23705
23706 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23707
23708         * reflection.c: fixed bug #43905.
23709
23710 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23711
23712         * class.c, domain.c, icall.c, metadata.h, object.h: support for
23713         handling TypedReference and ArgIterator.
23714         * loader.c, loader.h: added function to get signature at call site.
23715
23716 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23717
23718         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
23719         data readonly. Buglets and warning fixes. Some MethodSpec support.
23720
23721 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23722
23723         * class.h, class.c, object.c: remove relative numbering support.
23724
23725 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
23726
23727         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
23728         free the string, until we get a chance to fix Gtk#
23729
23730 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23731
23732         * marshal.c: revert last patch.
23733
23734 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23735
23736         * icall.c: updates for new mono_class_vtable() not calling
23737         the type constructor anymore.
23738
23739 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23740
23741         * object.h, object.c: separate vtable creation from type
23742         initialization. Make running the .cctor thread safe.
23743
23744 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23745
23746         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
23747
23748 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23749
23750         * loader.c (mono_get_method): consider calling convention
23751
23752 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
23753
23754         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
23755         to return the invisible global type for a module.
23756
23757         * reflection.c (mono_image_build_metadata): Emit global fields too.
23758
23759 2003-05-20  Peter Williams  <peterw@ximian.com>
23760
23761         * loader.c (mono_lookup_internal_call): Add a few newlines.
23762
23763 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
23764
23765         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
23766         literal strings.
23767
23768         * appdomain.c (set_domain_search_path): Recalculate search path when
23769         AppDomainSetup.PrivateBinPath changes.
23770
23771         * object.c (mono_class_compute_gc_descriptor): It turns out some
23772         parts of the class libs (like System.Thread) holds pointers to
23773         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
23774         to treat native int a pointer type here.
23775         
23776 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
23777
23778         * appdomain.h, domain.c: add hashtable for jump target resolution.
23779
23780 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
23781
23782         * reflection.h reflection.c icall.c: Added new icalls 
23783         GetManifestResourceInfoInternal, GetModulesInternal and support
23784         infrastructure.
23785
23786 2003-05-16  Dick Porter  <dick@ximian.com>
23787
23788         * icall.c:
23789         * file-io.h:
23790         * file-io.c: Implement System.IO.MonoIO::GetTempPath
23791
23792 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
23793
23794         * object.c: mono_store_remote_field: little fix to previous patch.
23795
23796 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23797
23798         * class.c: add constructors to array classes.
23799         * icall.c: special case array construction for InternalInvoke (),
23800
23801 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
23802
23803         * class.h class.c reflection.c object.c: Added support for field
23804         defaults in dynamically generated classes.
23805
23806 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23807
23808         * reflection.c: properly encode charset for ddlimport.
23809
23810 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23811
23812         * threads.c: allow compiling without GC.
23813
23814 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23815
23816         * appdomain.h, object.c, object.h, threads.c, threads.h: added
23817         handling of thread static data.
23818
23819 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23820
23821         * reflection.h, reflection.c: added mono_custom_attrs_free ().
23822
23823 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23824
23825         * class.c (mono_array_class_get): always set the serializable flags
23826         (mono_array_class_get): always set the SEALED attribute for array types
23827
23828 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
23829
23830         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
23831         attributes (fix for bug 42021).
23832
23833 2003-05-12  Dick Porter  <dick@ximian.com>
23834
23835         * gc.c: Don't run finalizers when the finalizer thread is
23836         finishing up, because the default domain has already been
23837         destroyed.
23838
23839 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
23840
23841         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
23842         value is null, we should throw an exception.   This is slightly
23843         different than the other conventions used for the constructor.
23844
23845 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23846
23847         * socket-io.c: fixed windows build.
23848
23849 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23850
23851         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
23852
23853 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
23854
23855         * object.c (mono_string_new_wrapper): Compatibility fix for MS
23856         compilers.
23857
23858 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * class.c (mono_class_layout_fields): Add experimental GC aware
23861         auto layout facility. Requires class library changes to work correctly.
23862
23863         (mono_class_setup_vtable): Avoid overriding explicit interface
23864         method implementations. Fixes iface3.exe test.
23865
23866         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
23867         object reference.
23868         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
23869         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
23870
23871         * metadata.h: Add new type classification macro which determines
23872         whenever the type holds an object reference.
23873
23874 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23875
23876         * marshal.c (mono_marshal_get_native_wrapper): cleanups
23877
23878 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
23879
23880         * gc.c (finalizer_thread): Work around a GC bug.
23881
23882 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
23883
23884         * marshal.c (emit_struct_conv): allow unions
23885
23886         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
23887
23888 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
23889
23890         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
23891
23892 2003-05-06  Martin Baulig  <martin@ximian.com>
23893
23894         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
23895
23896 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23897
23898         * socket-io.c:
23899         (Select_internal): allow NULLs, don't create arrays if not needed.
23900         Coupled with Socket.cs changes.
23901
23902         * threadpool.c:
23903         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
23904         register a finalizer for it that will close the semaphore handle. This
23905         fixes the leak and make Lupus' test run with > 4080 loops.
23906
23907 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23908
23909         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
23910         Jerome Laban (bug #42287)
23911
23912 2003-05-02  Martin Baulig  <martin@ximian.com>
23913
23914         * debug-mono-symfile.h
23915         (MonoSymbolFile): Moved declaration into mono-debug.h.
23916         (MonoDebugMethodJitInfo): Likewise.
23917         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
23918         argument.
23919         (_mono_debug_address_from_il_offset): Take a
23920         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
23921
23922         * mono-debug.h
23923         (MonoDebugDomainData): New struct.
23924         (mono_debug_get_domain_data): New function.
23925         (mono_debug_add_method): Take an additional `MonoDomain *'
23926         argument.
23927         (mono_debug_source_location_from_address): Likewise.
23928         (mono_debug_il_offset_from_address): Likewise.
23929         (mono_debug_address_from_il_offset): Likewise.
23930
23931 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
23932
23933         * reflection.c: one more check for null type in custom attrs.
23934
23935 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23936
23937         * reflection.c: avoid warning (comparison is always false due to limited
23938         range of data type).
23939
23940 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23941
23942         * icall.c: throw an exception in Type.GetField if the argument 'name'
23943         is NULL.
23944
23945 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
23946
23947         * reflection.c: fixed handling of enums in named arguments to custom
23948         attributes (bug #42123).
23949
23950 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23951
23952         * reflection.c: use the right array element type and handle
23953         a null for a Type argument, too.
23954
23955 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
23956
23957         * reflection.c: handle arrays as arguments to custom attributes.
23958
23959 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
23960
23961         * reflection.c: handle a string value in a custom attr
23962         ctor that takes an object.
23963
23964 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23965
23966         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
23967         (fix bug #42063)
23968
23969 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23970
23971         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
23972
23973 2003-04-27  Martin Baulig  <martin@ximian.com>
23974
23975         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
23976         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
23977         MONO_DEBUGGER_EVENT_BREAKPOINT.
23978         (mono_breakpoint_trampoline_code): Removed.
23979         (mono_debugger_event_handler): The last argument is now a
23980         `guint32'.
23981         (mono_debugger_insert_breakpoint_full): Removed the
23982         `use_trampoline' argument.
23983         (mono_debugger_method_has_breakpoint): Likewise.
23984         (mono_debugger_trampoline_breakpoint_callback): Renamed to
23985         mono_debugger_breakpoint_callback(); take the method and
23986         breakpoint number as arguments.
23987
23988 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23989
23990         * metadata.c: fix off by one when loading parameters attributes.
23991
23992 2003-04-24  Martin Baulig  <martin@ximian.com>
23993
23994         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
23995
23996 2003-04-24  Martin Baulig  <martin@ximian.com>
23997
23998         * mono-debug-debugger.c: Moved all code which interacts with the
23999         Mono Debugger here.
24000
24001         * debug-mono-symfile.c: This code now just deals with the symbol
24002         file itself, the debugger code is now in mono-debug-debugger.c.
24003
24004 2003-04-23  Martin Baulig  <martin@ximian.com>
24005
24006         * mono-debug.c (mono_debug_source_location_from_il_offset):
24007         New method; like mono_debug_source_location_from_address(), but
24008         takes an IL offset instead of a machine address.
24009
24010 2003-04-23  Martin Baulig  <martin@ximian.com>
24011
24012         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
24013         `line' field; this is now computed by the debugger.
24014
24015 2003-04-23  Martin Baulig  <martin@ximian.com>
24016
24017         * mono-debug.[ch]: New files.  This is the new debugging interface.
24018
24019         * mono-debug-debugger.[ch]: New files.  Moved all code which
24020         interacts with the Mono Debugger here.
24021
24022 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24023
24024         * domain.c (mono_init): initialize mono_defaults.monitor_class
24025
24026 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
24027
24028         * reflection.c (method_encode_code): Add a spicy exception to help
24029         future compiler authors.
24030
24031 2003-04-21  Martin Baulig  <martin@ximian.com>
24032
24033         * icall.c
24034         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
24035         Make this work with relative pathnames; g_filename_to_uri() needs
24036         an absolute filename.
24037
24038 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
24039
24040         * icall.c: Track name changes in Object and ValueType.
24041
24042 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
24043
24044         * metadata.c (mono_type_stack_size): size should be a multiple of
24045         sizeof (gpointer)
24046
24047 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24048
24049         * gc.c:
24050         (internal_domain_finalize): moved into mono_domain_finalize. No need
24051         to create another thread because the finalizers will be run in the
24052         finalizer thread.
24053         
24054         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
24055         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
24056         to be run (MS does this too).
24057
24058 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24059
24060         * object.c (mono_class_compute_gc_descriptor): Update comment.
24061
24062         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
24063
24064         * image.h: Add synchronized wrapper cache.
24065
24066         * image.c (do_mono_image_open): Initialize cache.
24067
24068         * reflection.c (create_dynamic_mono_image): Initialize cache.
24069
24070 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24071
24072         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
24073         ves_icall_System_Buffer_ByteLengthInternal.
24074
24075 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24076
24077         * reflection.c: setup klass->nested_in earlier. Allow
24078         a dash in the assembly name.
24079
24080 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
24081
24082         * metadata.c (mono_type_to_unmanaged): dont access
24083         type->data.klass for MONO_TYPE_OBJECT
24084         (mono_type_to_unmanaged): consider System.Delegate class
24085
24086 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
24087
24088         * class.c: just setup supertypes in the proper place instead of
24089         initializing the full element class for arrays.
24090
24091 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24092
24093         * class.c: ensure the element class of arrays is initialized.
24094         Setup the supertype info for array classes, too.
24095
24096 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
24097
24098         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
24099
24100 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24101
24102         * Makefile.am: re-added -m option when running cygpath. This way,
24103         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
24104         separator.
24105         * mono-config.c: same codepath for locating mono config file for WIN32
24106         and the rest.
24107         * assembly.c: if mono_assembly_setrootdir is called, don't override
24108         the value set.
24109
24110 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24111
24112         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
24113         MONO_ASSEMBLIES variable.
24114
24115 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24116
24117         * icall.c: added Assembly::GetNamespaces() icall.
24118
24119 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24120
24121         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
24122
24123 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
24124
24125         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
24126         * object.c: fixed bug in the construction of vtable for proxies
24127
24128 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24129
24130         * object.c (mono_array_new): Mark mono_array_new as an icall.
24131
24132 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24133
24134         * class.c: fixed test for public method when overriding interfaces.
24135         Closes bug #40970.
24136
24137 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24138
24139         * appdomain.h, domain.c: added mono_domain_foreach() to
24140         be able to access the currently loaded appdomains.
24141         * object.c: make string interning work across sppdomains.
24142         Mark some functions for use as icalls.
24143
24144 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24145
24146         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
24147
24148         * reflection.h reflection.c: Allocate long living data using 
24149         GC_MALLOC_ATOMIC so the collector does not need to scan it.
24150
24151         * reflection.c: Double the allocation size in streams instead of
24152         increasing it, to prevent unneccesary copying on large assemblies.
24153         
24154         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
24155         creation if the assembly does not have the Run flag set.
24156
24157 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24158
24159         * class.h: avoid the C++ keywords in header files (Jerome Laban
24160         spotted and fixed this).
24161
24162 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24163
24164         * object.c:
24165         (mono_unhandled_exception): fill in the arguments for the
24166         UnhandledException event. Only trigger that event for the default
24167         domain (as MS does).
24168
24169 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
24170
24171         * object.c: Improve typed allocation stuff based on suggestions from
24172         Paolo. Also turn it on if the GC library supports it.
24173
24174 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
24175
24176         * object.c object.h class.h: Added experimental typed allocation
24177         facility using the interfaces in gc_gcj.h.
24178
24179         * os/gc_wrapper.h: Added new include files.
24180         
24181 2003-04-03  Martin Baulig  <martin@ximian.com>
24182
24183         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
24184         which is not yet enabled by default.
24185
24186         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
24187         functions.
24188         (mono_gc_lock, mono_gc_unlock): New static functions.
24189
24190         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
24191         functions; stop/start the world for the garbage collector.  This
24192         is using the windows API; we need to complete the SuspendThread()/
24193         ResumeThread() implementation in the io-layer to make this work on Unix.
24194         (mono_gc_push_all_stacks): New public function; tells the garbage
24195         collector about the stack pointers from all managed threads.
24196
24197 2003-04-03  Martin Baulig  <martin@ximian.com>
24198
24199         * object.h (MonoThread): Added `gpointer stack_ptr'.
24200
24201         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
24202
24203 2003-04-03  Martin Baulig  <martin@ximian.com>
24204
24205         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
24206
24207 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
24208
24209         * reflection.c (typebuilder_setup_fields): Initialize field.first and
24210         field.last.
24211
24212 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
24213
24214         * loader.c (mono_lookup_internal_call): Report the corlib that is
24215         out of sync.
24216
24217 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
24218
24219         * icall.c (ves_icall_type_GetTypeCode): fixed check for
24220         System.DBNull (it's class not valuetype).
24221
24222 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24223
24224         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
24225         if the array method was already assigned a token (fixes bug#40646).
24226
24227 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
24228
24229         * reflection.c (mono_reflection_get_type): Attempt type resolve even
24230         if no assembly is given.
24231
24232 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
24233
24234         * metadata.h: Added the new tables.
24235
24236         * row-indexes.h: Added definitions for new tables.
24237
24238         * metadata.c: Add schemas for new tables, and add support for
24239         computing the sizes of them.
24240
24241         * class.c: Update for handling the new type cases.
24242
24243 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
24244
24245         * metadata.h (MONO_TYPE_IS_VOID): new macro
24246
24247 2003-03-31  Martin Baulig  <martin@ximian.com>
24248
24249         * threads.h (MonoThreadCallbacks): Added `thread_created'.
24250
24251         * threads.c (mono_thread_new_init): Call `thread_created' in the
24252         mono_thread_callbacks.
24253
24254 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
24255
24256         * loader.h: added marshalbyrefobject_class to mono_defaults
24257         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
24258         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
24259           generation of output parameters.
24260           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
24261         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
24262           contextbound and the target object belongs to the context of the caller.
24263         * object.h: added context and unwrapped_server variables in MonoRealProxy.
24264         * object.c: Implemented support for interfaces and abstract classes
24265           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
24266           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
24267
24268 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
24269
24270         * class.h class.c (mono_class_is_subclass_of): New function.
24271         
24272         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
24273         routines for most common case (calls from ArrayList::ToArray).
24274
24275         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
24276         routine so programs which call Environment::Exit() can be profiled.
24277
24278         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
24279         Added MONO_ARCH_SAVE_REGS.
24280
24281         * icall.c (ves_icall_type_is_subtype_of): Use new function.
24282
24283 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
24284
24285         * blob.h: Add a couple of new MonoType types definitions.
24286
24287         * tabledefs.h: Add a couple of new call convs.
24288
24289 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
24290
24291         * reflection.h (MonoReflectionDynamicAssembly): track changes in
24292         the layout of the class.
24293
24294         * reflection.c (alloc_table): double the size on overflow to avoid
24295         unnecessary copying.
24296
24297         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
24298         avoid filling out metadata tables and blobs. Also set mb->ilgen to
24299         null so it can be garbage collected.
24300         
24301 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
24302
24303         * reflection.c (mono_reflection_get_type): Return the resolved type
24304         only if it is in the assembly we searched.
24305
24306         * reflection.c (ensure_runtime_vtable): Initialize method slots.
24307
24308         * class.c (mono_class_setup_vtable): Set the slot of the overriding
24309         method.
24310
24311 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24312
24313         * appdomain.c:
24314         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
24315         the right one is 'file:///blah', but MS allows it.
24316         * assembly.c:
24317         (mono_assembly_open): allow 'file://blah'
24318
24319         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
24320
24321 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
24322
24323         * socket-io.c: fixes bug #40310.
24324
24325 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
24326
24327         * reflection.c (mono_reflection_parse_type): handle deeply nested
24328         types correctly.
24329
24330         * reflection.c (mono_image_create_token): Use unique token values
24331         since they will be put into a hash table.
24332
24333         * class.c (mono_class_setup_vtable): If a method occurs in more than
24334         one place in the vtable, and it gets overriden, then change the
24335         other occurances too.
24336
24337         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
24338         object as return type.
24339
24340 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
24341
24342         * icall.c: Deleted "ToString" implementation for double and float
24343         because they are full implemented in managed code.
24344
24345 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24346
24347         * reflection.c, reflection.h: implemented and exported functions
24348         to retrieve info about custom attributes.
24349
24350 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24351
24352         * appdomain.c: moved Uri handling to assembly.c
24353         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
24354         work when using a file Uri in *nix and windows.
24355
24356         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
24357         GetReferencedAssemblies.
24358
24359 2003-03-18  Dick Porter  <dick@ximian.com>
24360
24361         * icall.c: Rename a couple of internal calls
24362
24363         * threads.c: Set the thread state to Stopped when a thread exits.
24364         Fixes bug 39377.
24365
24366 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
24367
24368         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
24369         New icall.
24370
24371         * object.c (mono_class_vtable): fix warning.
24372
24373 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
24374
24375         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
24376
24377         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
24378         memory.
24379         (method_encode_clauses): Create exception info structures in the right
24380         order.
24381         (mono_reflection_setup_internal_class): Initialize supertypes field.
24382
24383         * class.c object.c: Handle interfaces which implement other interfaces 
24384         correctly.
24385
24386         * class.h class.c: Move the supertypes array initialization code into 
24387         a separate function so it can be used for dynamic types too. Also call
24388         it earlier, in mono_class_init(), since it can be used before the
24389         type is initialized.
24390
24391 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24392
24393         * Makefile.am:
24394         * assembly.c:
24395         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
24396
24397         * appdomain.c:
24398         * appdomain.h:
24399         * marshal.c:
24400         * object.c: remove warnings.
24401
24402 2003-03-13  Martin Baulig  <martin@ximian.com>
24403
24404         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
24405         (MonoDebugLexicalBlockEntry): New types.
24406
24407         * debug-mono-symfile.c
24408         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
24409
24410 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24411
24412         * process.c: ret can be any non-zero value accroding to MS doc.
24413
24414 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
24415
24416         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
24417         fixing a warning for a miss-used prototype, would have cause
24418         random memory corruption.
24419
24420 2003-03-07  Martin Baulig  <martin@ximian.com>
24421
24422         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
24423         getting really annoying ....
24424
24425 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
24426
24427         * reflection.c (fixup_method): added support for array methods.
24428
24429 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24430
24431         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
24432         (pointed out by Michael Adams).
24433
24434 2003-03-04  Dick Porter  <dick@ximian.com>
24435
24436         * icall.c: Temporarily reverted the Double and Single ToString()
24437         change, because it broke nunit.
24438
24439 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
24440
24441         * object.h, threads.h: make include files compatible with C++
24442         (patch by Jerome Laban <jlaban@wanadoo.fr>).
24443
24444 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
24445
24446         * icall.c: Erased ToString helper functions for Double and Single.
24447         Now, that implementations ar all in managed code (Double and Single
24448         Formatters).
24449
24450 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
24451
24452         * appdomain.c: Added method for initializing the default context of
24453         a domain. Added internal call for getting the default context.
24454         * appdomain.h: Added context variable in MonoDomain struct.
24455         * domain.c: mono_domain_set also sets the default context of the domain
24456         * icall.c: Mapped internal method InternalGetDefaultContext.
24457         * object.c: mono_object_get_virtual_method returns always a remoting
24458         wrapper if the object is a transparent proxy.
24459         mono_runtime_invoke_array: when creating an object by calling the
24460         constructor, if the created object is a proxy, then the constructor should
24461         be called using the a remoting wrapper.
24462
24463 2003-03-03  Dick Porter  <dick@ximian.com>
24464
24465         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
24466         variable so it compiles on solaris.  Problem spotted by
24467         Christopher Taylor <ct@cs.clemson.edu>
24468
24469 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24470
24471         * appdomain.c:
24472         (get_info_from_assembly_name): don't leak value.
24473
24474         * icall.c:
24475         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
24476         result.
24477
24478 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24479
24480         * assembly.c: export mono_image_load_references ().
24481         * class.c: handle function pointers. mono_class_from_name() now
24482         supports nested type names directly.
24483
24484 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
24485
24486         * reflection.h reflection.c: Encode already created dynamic methods 
24487         and fields correctly as a DEF instead of a REF.
24488
24489         * reflection.c: Get rid of the force_ref argument to 
24490         mono_image_typedef_or_ref since it was wrong in the first place.
24491
24492         * string-icalls.c: add error checking to string constructors according
24493         to the MSDN docs.
24494
24495         * reflection.c: Emit types in the order their TypeBuilders were 
24496         created. Previously, a new table index was assigned to each type before
24497         the tables were emitted. This was wrong because the signature blob
24498         might already refer to a type by its original table index.
24499
24500 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
24501
24502         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
24503         change.
24504         
24505 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24506
24507         * Makefile.am: make assemblies dir have \ instead of / on windows.
24508
24509 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
24510
24511         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
24512         iterate over the NESTEDCLASS table using a linear search since the
24513         table is not guaranteed to be sorted by the secondary key.
24514
24515         * class.c (mono_class_create_from_typedef): fixed up call to
24516         mono_metadata_nesting_typedef.
24517         
24518 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
24519
24520         * marshal.c (mono_string_to_byvalstr): clear the memory as
24521         suggested by Jerome Laban <jlaban@wanadoo.fr>
24522
24523 2003-02-26  Dick Porter  <dick@ximian.com>
24524
24525         * process.c: Cope with padding in .rsrc blocks
24526
24527 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
24528
24529         * metadata.h: reverted the filter_len change, it breaks reflection
24530         
24531 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
24532
24533         * metadata.h: added a new field to store the filter_len
24534         
24535
24536 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24537
24538         * reflection.c: handle custom attributes for types and members
24539         created with Reflection.Emit (bug#38422).
24540
24541 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
24542
24543         * reflection.c: define RTSpecialName automatically for constructors for
24544         compatibility with MS.NET.
24545
24546         * reflection.c (mono_reflection_create_runtime_class): initialize
24547         nested_in field of dynamically created classes.
24548
24549 2003-02-22  Martin Baulig  <martin@ximian.com>
24550
24551         * debug-mono-symfile.h: Incremented version number.
24552
24553 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
24554
24555         * object.h icall.c process.c: fix warnings.
24556
24557 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
24558
24559         * appdomain.h appdomain.c:
24560         (mono_domain_try_type_resolve): split the 
24561         name_or_tb argument into a name and a tb argument.
24562         (mono_domain_has_type_resolve): new function to check whenever the
24563         application has registered a TypeResolve event handler.
24564         
24565         * icall.c reflection.h reflection.c: move the type resolve logic into
24566         mono_reflection_get_type () so it will be invoked when 
24567         Assembly::GetType () is called.
24568
24569         * reflection.c:
24570         (mono_reflection_get_type): renamed to get_type_internal.
24571         (mono_reflection_get_type): fixed type name generation so it works 
24572         for nested types too.
24573         (mono_reflection_get_type): call has_type_resolve () to avoid the 
24574         costly type name generation if there is no resolve event handler.
24575
24576 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24577
24578         * class.c, image.c: load exported types from file references.
24579
24580 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
24581
24582         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
24583           used to cache the managed methods used to create proxies and make 
24584           remote invocation of methods.
24585         * class.h: Added in MonoVTable a flag to indicate that a class needs 
24586           to be remotely created.
24587         * object.c: Modified the method mono_class_vtable(). It now initializes 
24588           the remote flag of the vtable. Modified mono_object_new_specific(), 
24589           so now it checks the remote flag.
24590         * icall.c: Added a couple of internal methods, one for enabling instance 
24591           creation interception for a type, and one for creating objects bypassing
24592           the remote check.
24593
24594 2003-02-18  Martin Baulig  <martin@ximian.com>
24595
24596         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
24597         New interncall to get a method's metadata token.
24598
24599         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
24600         New interncall for the debugger.
24601
24602 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
24603
24604         * class.c (mono_class_setup_vtable): allocate supertype array
24605
24606 2003-02-18  Martin Baulig  <martin@ximian.com>
24607
24608         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
24609
24610 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24611
24612         * reflection.c:
24613         (assembly_name_to_aname): jump over unknown properties (i've found
24614         something like: 'type, assembly, version=xxx, custom=null, public...',
24615         so now will ignore custom=null and still get the rest of the values).
24616
24617 2003-02-17  Dick Porter  <dick@ximian.com>
24618
24619         * threads.c: Have Thread.Start() wait for a semaphore to signal
24620         that the thread has set up all its local data.  This fixes bug
24621         34323, where Abort() raced the new thread's TLS data.
24622
24623         Also removes the handle_store() call from start_wrapper, because
24624         threads are now always created suspended and there is no longer a
24625         race between the parent and child threads to store the info.
24626
24627 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
24628
24629         * image.c: explain the #- heap issue in a message, hopefully
24630         avoiding FAQs on mono-list.
24631
24632 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24633
24634         * icall.c:
24635         (GetEntryAssembly): if the domain has not invoked
24636         AppDomain.ExecuteAssembly yet, return the assembly of the default
24637         AppDomain.
24638
24639 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
24640
24641         * class.c (mono_ldtoken): make it work in dynamic assemblies.
24642
24643 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24644
24645         * metadata.c, reflection.c: simple speedup to type hash
24646         and equals code.
24647
24648 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
24649
24650         * image.c, image.h, class.c, assembly.c: move module loading
24651         to MonoImage. When loading metadata, consider alignemnet from
24652         the start of metadata, not from the metadata address in memory.
24653
24654 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
24655
24656         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
24657         AssemblyBuilder objects. Factored out custom attribute creation into
24658         a separate function.
24659         (create_custom_attr): new function to create custom attributes.
24660
24661 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
24662
24663         * Makefile.am: Got tired of typing the full pathname to pedump.
24664         Until there is another option, am installing this.
24665
24666 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
24667
24668         * class.c (class_compute_field_layout): always set field->parent 
24669         (mono_ldtoken): use mono_defaults.fieldhandle_class;
24670
24671 2003-02-11  Dick Porter  <dick@ximian.com>
24672
24673         * threads-types.h:
24674         * monitor.c: Rewrote Monitor, making lock much faster and
24675         Pulse/Wait work as specified.  Also uses much fewer handles, and only
24676         creates them as needed.
24677
24678         * exception.c: Added SynchronizationLockException
24679
24680         * threads.c: Deleted old Monitor implementation.  The new one is
24681         in a new file.
24682
24683 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24684
24685         * class.c: handled TypedReference type code. Set the correct size for
24686         class data. Setup interface_offsets for interface classes, too.
24687
24688 2003-02-09  Martin Baulig  <martin@ximian.com>
24689
24690         * debug-mono-symfile.h: Reflect latest symbol writer changes.
24691
24692 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
24693
24694         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
24695         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
24696         * object.c: fixed mono_object_get_virtual_method () for interfaces.
24697         * verify.c: check for code that runs after the end of the method.
24698
24699 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
24700
24701         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
24702         "System.Math::Round2".
24703         * sysmath.h: Added Floor, Round and Round2 definitions.
24704         * sysmath.c: Modified certain functions that were not 100% compliant
24705         with MS.NET (math precision) and added the implementation of Floor,
24706         Round and Round2.
24707
24708 2003-02-07  Martin Baulig  <martin@ximian.com>
24709
24710         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
24711
24712 2003-02-07  Martin Baulig  <martin@ximian.com>
24713
24714         * debug-mono-symfile.c: Reflected latest symwriter changes.
24715         (mono_debug_create_mono_symbol_file): Removed.
24716         (mono_debug_open_mono_symbol_file): Take an argument which
24717         specifies whether to create a dynamic symbol file.
24718
24719 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
24720
24721         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
24722
24723 2003-02-05  Martin Baulig  <martin@ximian.com>
24724
24725         * reflection.c (mono_image_build_metadata): Make this public,
24726         protect it against being called multiple times, don't create
24727         resources and don't build the compressed metadata here.
24728         (mono_image_create_pefile): Do this here.
24729
24730         * icall.c
24731         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
24732
24733 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24734
24735         * socket-io.c: fixed bug #36322.
24736
24737 2003-02-06  Piers Haken <piersh@friskit.com>
24738
24739         * appdomain.[ch]:
24740         * class.h:
24741         * debug-mono-symfile.c:
24742         * icall.c:
24743         * loader.c:
24744         * mono-config.c:
24745         * monosn.c:
24746         * reflection.c:
24747         * socket-io.c: warning cleanups
24748
24749 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
24750
24751         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
24752         function. works like remoting invoke, but does a check for the Proxy first.
24753
24754 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
24755
24756         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
24757
24758 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
24759
24760         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
24761         array of pointers.
24762         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
24763         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
24764
24765         * object.c (mono_store_remote_field_new): used by the new jit
24766         instead of mono_store_remote_field
24767         (mono_load_remote_field_new): used by the new jit
24768         instead of mono_load_remote_field
24769
24770 2003-02-05  Patrik Torstensson
24771
24772         * appdomain.c: changed unload to take the domain id instead
24773         of domain
24774         
24775         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
24776
24777
24778 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24779
24780         * appdomain.c: don't look for assemblies in ApplicationBase if
24781         PrivateBinPathProbe is set.
24782
24783 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24784
24785         * object.c: make the first argument in main_args contain the absolute
24786         path to the assembly. Fixes bug #37511.
24787
24788 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24789
24790         * icall.c: get correct UTC offset for countries not using daylight
24791         time saving. Fixes bug #30030.
24792
24793 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24794
24795         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
24796         and 1 are the family).
24797
24798 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
24799
24800         * icall.c (ves_icall_InternalExecute): removed wrong assertion
24801
24802         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
24803
24804 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
24805
24806         * reflection.c: added support for SignatureHelper tokens, which is
24807         needed by the Calli opcode.
24808
24809         * reflection.h: track changes to SignatureHelper class.
24810
24811         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
24812
24813 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24814
24815         * appdomain.c: fixed loading assemblies from PrivateBinPath.
24816
24817 2003-02-03  Patrik Torstensson
24818         * appdomain.[c|h], domain.c : 
24819          - Added support for getting a domain via domain id
24820          - Support for setting and getting domain from System.AppDomain 
24821            (used in cross appdomain channel)
24822          - Added support for get/set for a MonoAppContext on a thread 
24823            (Context class in System.Runtime.Remoting.Contexts),
24824          - Removed hack in Get/SetData and ExecuteAssembly.
24825         
24826         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
24827         the managed world to get control when a proxy is created.
24828
24829         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
24830         
24831 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
24832
24833         * icall.c
24834         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
24835         Populate the codebase field as well.
24836
24837 2003-02-02  Martin Baulig  <martin@ximian.com>
24838
24839         * debug-mono-symfile.c
24840         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
24841         (mono_debug_symfile_add_method): Allow interncalls.
24842
24843 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24844
24845         * icall.c: throw parse exception if strtod fails or the string is empty.
24846
24847 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
24848
24849         * marshal.c: handle object type separately from defined
24850         class types.
24851
24852 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
24853
24854         * marshal.c: handle NATIVE_LPSTR for strings when it's
24855         explicitly specified.
24856
24857 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
24858
24859         * reflection.c, reflection.h, icall.c: setup the reflection
24860         handle cache for ModuleBuilders and AssemblyBuilders.
24861
24862 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
24863
24864         * reflection.c (reflection_methodbuilder_to_mono_method): set
24865         pinvoke flag
24866
24867 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24868
24869         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
24870
24871 2003-01-29  Dick Porter  <dick@ximian.com>
24872
24873         * threads.c: No need for the fake_thread kludge now that Thread
24874         doesn't run a class constructor
24875         
24876 2003-01-29  Dick Porter  <dick@ximian.com>
24877
24878         * threads.c: Use g_direct_hash instead of the rather bogus
24879         g_int_hash
24880
24881 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
24882
24883         * marshal.c (mono_marshal_get_native_wrapper): add check for null
24884         (fix pinvoke12.exe)
24885         (mono_marshal_get_struct_to_ptr): generate valid IL code
24886         (mono_marshal_get_ptr_to_struct): generate valid IL code
24887         (*): correctly set sig->pinvoke, we need to memdup the signature
24888         to do that
24889
24890 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24891
24892         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
24893         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
24894
24895 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
24896
24897         * profiler.c: provide more callers information.
24898
24899 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
24900
24901         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
24902
24903         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
24904
24905         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
24906
24907 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24908
24909         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
24910         exception instead of going into an infinite loop on dates which it 
24911         can't yet handle.
24912
24913         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
24914         out-of-range exception if needed.
24915
24916         * class.c (mono_class_setup_vtable): allow a virtual method to provide
24917         an implementation for an interface method and to override an inherited
24918         method at the same time. 
24919         Imagine a scenario when a virtual method is used to override a
24920         virtual abstract method in a parent class, and this same method 
24921         provides an implementation for an method inherited from an interface. 
24922         In this case, the interface resolution code will set im->slot, which 
24923         means that the virtual method override pass will skip this method 
24924         which means a pointer to the abstract method inherited from the parent
24925         will remain in the vtable of this non-abstract class.
24926
24927         * class.c: (mono_class_setup_vtable): continue search for a real 
24928         method if only an abstract method is found.     
24929
24930 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
24931
24932         * reflection.c: add size to encoding for ByValStr and ByValArray
24933         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
24934
24935 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24936
24937         * class.c (mono_class_setup_vtable): pass the override info as an
24938         argument.
24939
24940         * class.c (mono_class_setup_vtable): set the slot of overriding methods
24941         correctly.
24942         
24943         * reflection.c (ensure_runtime_vtable); add support for method 
24944         overrides.
24945         
24946 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24947
24948         * reflection.c (resolution_scope_from_image): Hack to work to work with
24949         dynamic assemblies.
24950
24951         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
24952         added a 'force_ref' argument to force this function to allways return 
24953         a TypeRef. This is needed by mono_image_get_memberref_token ().
24954         
24955 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24956
24957         * reflection.c (mono_image_get_type_info): interfaces really don't have
24958         a parent.
24959
24960         * reflection.c (mono_image_basic_init): fill out missing fields of
24961         image structure.
24962
24963         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
24964         dynamic assemblies. This is required so dynamic assemblies show up in
24965         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
24966         Type::GetType() etc. This is consistent with MS behaviour.
24967
24968         * image.c image.h reflection.c: add newly created classes to the name 
24969         cache so mono_class_get () will find them.      
24970
24971 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
24972
24973         First part of changes to get IKVM.NET running under mono.
24974         
24975         * appdomain.h, appdomain.c: added new function 
24976         mono_domain_try_type_resolve() which will emit TypeResolve events. 
24977         This function will call AppDomain::DoTypeResolve to do the actual work.
24978
24979         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
24980         moved existing code dealing with dynamic tokens to a new function 
24981         called mono_reflection_lookup_dynamic_token (). This function will 
24982         raise TypeResolve events when appropriate. Since reflection.c is not 
24983         part of libmetadata, a new hook function called 
24984         mono_lookup_dynamic_token() is added to class.c which will call this.
24985
24986         * assembly.h assembly.c: make the invoke_load_hook function public,
24987         so it can be called for dynamic assemblies.
24988
24989         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
24990
24991         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
24992         type isn't found.
24993
24994         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
24995         MonoGHashTable, since it contains pointers to objects which the GC 
24996         needs to track.
24997
24998         * assembly.c (search_loaded): remove unused variable.
24999         
25000 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
25001
25002         * object.c: fixed issue exposed by gcc-generated IL programs
25003         that use RVA data for pointers.
25004
25005 2003-01-25  Martin Baulig  <martin@ximian.com>
25006
25007         * threads.c (start_wrapper): Moved the initialization of
25008         `start_func' above the mono_new_thread_init() call to which we
25009         pass it as argument.
25010
25011 2003-01-24  Martin Baulig  <martin@ximian.com>
25012
25013         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
25014         the MonoThread pointer.
25015
25016 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
25017
25018         * icall.c: Rename `PowImpl' to Pow.
25019
25020 2003-01-23  Dick Porter  <dick@ximian.com>
25021
25022         * threads.c (start_wrapper): Create a Thread object if needed, so
25023         the Main() thread can do the class initialisation in a subthread
25024         that has been set up to allow managed code execution.
25025
25026         Pass the thread ID instead of the MonoThread pointer to the thread
25027         start and attach callbacks.  This change is required, because the
25028         jit thread start callback must be called _before_ the Thread
25029         object can be created.
25030         
25031         (mono_thread_init): Removed much object creation code that is no
25032         longer needed.  No managed code is called from here now.
25033
25034         * object.c (mono_runtime_exec_managed_code): Create a subthread
25035         for Main, and call back to the runtime to use it.
25036         Set the exit code when Main exits.
25037
25038         * gc.c: Make sure domain finalisation happens in a subthread.
25039         Re-enable threaded GC, fixing bug 31333 (again).
25040
25041         * environment.c: System.Environment internall calls (so far just
25042         ExitCode is here, the others are still in icall.c)
25043
25044         * appdomain.c (mono_runtime_cleanup): All threads running managed
25045         code should have finished before mono_runtime_cleanup() is
25046         reached, so no need to clean up threads.
25047
25048 2003-01-22  Martin Baulig  <martin@ximian.com>
25049
25050         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
25051         `gpointer func' arguments.      
25052         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
25053         but added `MonoThread *thread' argument.
25054         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
25055
25056         * threads.c (mono_new_thread_init): Added `gpointer func' argument
25057         and pass it to the mono_thread_start_cb callback.
25058         (mono_install_thread_callbacks): New public function to install a
25059         set of callbacks which are set by the debugger.
25060         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
25061
25062 2003-01-22  Martin Baulig  <martin@ximian.com>
25063
25064         * Makefile.am: Install debug-mono-symfile.h.
25065
25066 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
25067
25068         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
25069
25070 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
25071
25072         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
25073         * class.c (mono_ptr_class_get): correctly set access levels of pointers
25074         (mono_array_class_get): correctly set access levels of arrays
25075
25076 2003-01-20      Patrik Torstensson
25077         * image.h (MonoAssemblyName): changed major, minor, build, revision
25078         from signed to unsigned.
25079
25080 2003-01-20  sean kasun <skasun@azstarnet.com>
25081
25082         * reflection.c (load_cattr_value): Now this handles
25083         MONO_TYPE_SZARRAY.  Fixes bug #35629
25084
25085 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
25086
25087         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
25088         integer value
25089
25090 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25091
25092         * decimal.c: fixed bug #26056.
25093
25094 2003-01-17  Martin Baulig  <martin@ximian.com>
25095
25096         * gc.c: Raise an ExecutionEngineException instead of using g_error().
25097
25098 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25099
25100         * exception.[ch]:
25101         (mono_get_exception_type_initialization): new function.
25102
25103         * object.c: throw a TypeInitializationException when an exception is
25104         thrown invoking the class constructor.
25105
25106 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25107
25108         * reflection.c: fixed attribute reading.
25109
25110 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25111
25112         * icall.c:
25113         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
25114         provided, look for the type in the calling assembly and then in
25115         mscorlib; if the assembly name is provided, only try that one.
25116
25117 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
25118
25119         * object.c: register the vtable before there is a chance it's
25120         queried again recursively.
25121
25122 2003-01-13  Duncan Mak  <duncan@ximian.com>
25123
25124         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
25125         gc-internal.h. 
25126         
25127 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
25128
25129         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
25130
25131 2003-01-11  Martin Baulig  <martin@ximian.com>
25132
25133         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
25134         this to 20 for the release.
25135
25136 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
25137
25138         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
25139
25140         * loader.c (mono_method_get_marshal_info): bug fix
25141
25142         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
25143         structures with explicit layout
25144
25145 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
25146
25147         * profiler.c: made the output more readable (and sorted). 
25148         Added caller information for the allocation profiler.
25149
25150 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
25151
25152         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
25153
25154 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25155
25156         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
25157         to get value types.
25158         
25159 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
25160
25161         * object.c, profiler.h, profiler.c, profiler-private.h:
25162         Added object allocation profiler.
25163
25164 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
25165
25166         * reflection.h, reflection.c: handle global methods.
25167         Compress blob entries.
25168
25169 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * marshal.c: fix compilation.
25172
25173 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
25174
25175         * loader.c (mono_method_get_marshal_info): impl.
25176
25177         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
25178
25179 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25180
25181         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
25182         for reference types.
25183
25184 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
25185
25186         * loader.c: fixed off by one error in loaded parameter names.
25187
25188 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
25189
25190         * marshal.c (mono_marshal_get_icall_wrapper): like
25191         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
25192         instead of a MonoMethod.
25193
25194 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25195
25196         * decimal.c: fixed bug #36537.
25197
25198 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
25199
25200         * marshal.c: throw a missing method exception if a
25201         P/Invoke method is not found.
25202
25203 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
25204
25205         * icall.c: allow a null this for constructors.
25206
25207 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
25208
25209         * icall.c: raise the proper exceptions if the arguments to the
25210         internal Invoke are incorrect.
25211
25212 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
25213
25214         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
25215
25216 2003-01-03  Martin Baulig  <martin@ximian.com>
25217
25218         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
25219
25220 2002-12-31  Martin Baulig  <martin@ximian.com>
25221
25222         * debug-mono-symfile.c: Completely rewrote the type section.
25223         Instead of using individual malloc()ed fields, we use one big
25224         continuous memory area and offsets into this area.
25225         See the comments in the source code for details.
25226
25227 2002-12-30  Martin Baulig  <martin@ximian.com>
25228
25229         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
25230
25231 2002-12-30  Martin Baulig  <martin@ximian.com>
25232
25233         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
25234         line number table in this data blob instead of using an external
25235         pointer.
25236
25237 2002-12-28  Martin Baulig  <martin@ximian.com>
25238
25239         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
25240
25241 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
25242
25243         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
25244         as a boxed return type.
25245
25246 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
25247
25248         * appdomain.c
25249         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
25250         g_build_filename to properly get separators on the filename created.
25251
25252         * object.h: Small change, introduce MonoMarshalByRefObject to
25253         track the layout of that structure in the C# universe as we make
25254         changes there.
25255
25256 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
25257
25258         * object.c: removed assert to allow static fields on interfaces.
25259         * loader.c: a TypeSpec may be used for any type, not just arrays.
25260
25261 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
25262
25263         * class.c, class.h: added mono_class_array_element_size ().
25264         Ignore static methods in interfaces.
25265
25266 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25267
25268         * threads.c: fixed the build under cygwin.
25269
25270 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
25271
25272         * reflection.c: handle nullref constants. Allocate keys for
25273         reflection handles with the GC.
25274
25275 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25276
25277         * threads.c, threads.h: added mono_thread_get_abort_signal()
25278         to get a suitable signal for thread abort.
25279
25280 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
25281
25282         * metadata.c: fix handling of ExportedType table.
25283
25284 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25285
25286         * icall.c: added WriteWindowsDebugString internal call.
25287
25288 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25289
25290         * reflection.h: added fields to match C# implementation.
25291
25292 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25293
25294         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
25295
25296 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
25297
25298         * gc.h, gc-internal.h: Rename header for GC internal calls to
25299         gc-internal.h from gc.h as to not clash with Boehm GC having its
25300         header installed as <gc.h> in outside include paths.
25301         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
25302         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
25303
25304 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25305
25306         * icall.c: assign minor, build and revision in FillName.
25307
25308 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
25309
25310         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
25311         Added support for running code generated by Reflection.Emit.
25312
25313 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25314
25315         * appdomain.c: check for NULL argument in LoadFrom.
25316
25317 2002-12-10  Dick Porter  <dick@ximian.com>
25318
25319         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
25320
25321 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25322
25323         * appdomain.c: fix buglet when building exe file name.  Handle full
25324         assembly name (needed after latest changes to AssemblyName).
25325         * image.c:
25326         (mono_image_close): free some hashtables.
25327
25328 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
25329
25330         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
25331         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
25332         on some systems (redhat 7.3) 
25333
25334 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
25335
25336         * threads.c: delete the critical section of a sync block,
25337         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
25338
25339 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
25340
25341         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
25342
25343 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25344
25345         * appdomain.[ch]: handle the assembly preload event to try loading the
25346         assemblies using the paths we have in the current domain.
25347
25348         * assembly.[ch]: created an assembly preload hook that is called to try
25349         loading the assembly by other means that the ones provided here.
25350
25351         * domain.c: initialize the domain search path.
25352
25353         From now on, assemblies (TODO: except corlib and System) are loaded
25354         according to these rules when using mono_assembly_load ():
25355
25356                 1. It tries to load the assembly from the ApplicationBase
25357                 of the current domain appending .dll and .exe (TODO: have to
25358                 try loading from name/name.dll and name/name.exe).
25359
25360                 2. It tries the search path specified in PrivateBinPath for the
25361                 current domain (if any).
25362
25363                 3. Previous behavior.
25364
25365 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
25366
25367         * icall.c: implemented GetInterfaceMap() related icall.
25368         * domain.c, loader.h: load MethodInfo in mono_defaults.
25369
25370 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
25371
25372         * gc.c: disable the finalizer thread for now, untill all the issues
25373         with it are resolved.
25374
25375 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
25376
25377         * string-icalls.c: handle embedded nulls in string ctor when the
25378         length is specified.
25379
25380 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
25381
25382         * class.c: look for explicit interface implementation in parent
25383         classes, too.
25384
25385 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
25386
25387         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
25388
25389 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
25390
25391         * gc.c: protect handles with a critical section.
25392
25393 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25394
25395         * icall.c:
25396         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
25397         parameters. If no assembly specified, try getting the type from all
25398         the assemblies in the current domain, else, load the assembly and get
25399         the type from it.
25400
25401 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25402
25403         * marshal.c: applied patch from Aleksey Demakov that fixes
25404         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
25405
25406 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25407
25408         * icall.c: fixed get_location.
25409
25410 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
25411
25412         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
25413         declarations to make it work with older gcc. 
25414
25415         * loader.c (mono_get_method): set signature->pinvoke for native calls
25416
25417 2002-11-20  Dick Porter  <dick@ximian.com>
25418
25419         * threads.c (mono_thread_init): Set the main thread's handle
25420
25421 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
25422
25423         * gc.c: allow compilation without GC support. Changed to match the
25424         mono coding style.
25425
25426 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
25427
25428         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
25429
25430 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
25431
25432         * reflection.c: set a public key token on the core assemblies.
25433
25434 2002-11-18  Dick Porter  <dick@ximian.com>
25435
25436         * threads.c: Split out some thread initialisation so that other
25437         files can set the start callback function.
25438
25439         * gc.c: Run finalisers in a separate thread, to avoid stack
25440         overflow.  Fixes bug 31333.
25441
25442         * appdomain.c: Set up GC finalisation thread.
25443
25444         * reflection.c: 
25445         * object.c: 
25446         * domain.c: Use gc.h macros for GC_malloc
25447         
25448 2002-11-15  Dick Porter  <dick@ximian.com>
25449
25450         * threadpool.c: 
25451         * threads.c:
25452         * appdomain.c: Removed mono_runtime_init_with_attach(),
25453         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
25454         merging the extra parameter with the existing function.  Removed
25455         unneeded code in mono_thread_attach().
25456
25457 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
25458
25459         * image.c (mono_image_loaded_by_guid): a method to get loaded
25460         images by guid. 
25461         (load_metadata_ptrs): we store the guid as string.
25462
25463 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
25464
25465         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
25466
25467         * metadata.c (mono_guid_to_string): imported method form Zoltan
25468         Varga (slightly modified)
25469
25470         * assembly.c (mono_assembly_open): load precompiled code
25471
25472         * loader.h (MonoMethod): we store the method token for use in the
25473         aot compiler. 
25474
25475 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25476
25477         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
25478         the hook function called when an assembly is loaded.
25479         
25480         * domain.c: Modified file.
25481         (mono_domain_assembly_load): removed hash table insertion of assemblies.
25482
25483         Fixes bug #33196.
25484
25485 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
25486
25487         * reflection.c: Map PEFileKind to the value expected by the WinNT
25488         image loader. 
25489
25490 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25491
25492         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
25493         Read until the buffer is filled completely.
25494
25495 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25496
25497         * icall.c: implemented MonoType.InternalGetEvent ().
25498
25499 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25500
25501         * appdomain.c: implemented InitAppDomainSetup. Delayed
25502         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
25503         the entry_assembly.
25504
25505         * assembly.c: base_dir is now an absolute path ending with
25506         G_DIR_SEPARATOR.
25507
25508         * icall.c: modified get_location according to the above changes.
25509
25510         * object.c: init AppDomain.SetupInformation for the default domain after
25511         we have the entry assembly.
25512
25513         * domain.c: when unloading a domain, setup = NULL.
25514
25515 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
25516
25517         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
25518
25519 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
25520
25521         * object.h, object.c: introduced mono_object_get_virtual_method ()
25522         to lookup the method invoked on an object when a callvirt is done on
25523         a method.
25524         * icall.c: make MethodInfo::Invoke() always do a virtual call.
25525
25526 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25527
25528         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
25529         current domain when loaded an assembly and failed to load it.
25530
25531         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
25532
25533 2002-10-31  Dick Porter  <dick@ximian.com>
25534
25535         * icall.c: 
25536         * file-io.h: 
25537         * file-io.c: Return the error status in a parameter, as the
25538         GetLastError() value has long since been blown away if we try and
25539         look it up in a subsequent internal call invocation.  Delete the
25540         GetLastError() internal call, because it's useless.
25541
25542 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
25543
25544         * class.[ch]: added cast_class to fix bug 29517
25545
25546 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
25547
25548         * marshal.c: create valid IL code in the filter clause:
25549         the new JIT is less forgiving:-)
25550
25551 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25552
25553         * icall.c: removed get_property internal call.
25554
25555 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
25556
25557         * appdomain.h domain.c: Added an ID to appdomains.
25558         
25559         * threads.c threads.h icall.c: Implement icall
25560         Thread:GetDomainID(), and remove unused icall 
25561         CurrentThreadDomain_internal.
25562
25563 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25564
25565         * icall.c: Don't recurse through the base types in GetConstructor.
25566         Fixes bug #32063. 
25567
25568 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
25569
25570         * mempool.h, mempool.c: added mono_mempool_empty() and
25571         mono_mempool_stats().
25572
25573 2002-10-23  Dick Porter  <dick@ximian.com>
25574
25575         * file-io.c: 
25576         * file-io.h: 
25577         * icall.c: Added MonoIO.GetFileType internal call
25578
25579 2002-10-17  Dick Porter  <dick@ximian.com>
25580
25581         * appdomain.c (mono_runtime_cleanup): Don't signal the async
25582         delegate semaphore before waiting for all threads to finish,
25583         because new threads can also call async delegates.  Fixes bug
25584         32004.
25585
25586         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
25587         of 3 seconds, in case another async job is queued.  (This part is
25588         needed because the bug fix reintroduced the 3s exit lag.)  This
25589         makes the mono_runtime_shutdown flag superfluous.
25590
25591 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
25592
25593         * reflection.c: include ehader size in method section headers.
25594         Really check for suplicated modules entries.
25595
25596 2002-10-17  Martin Baulig  <martin@gnome.org>
25597
25598         * debug-mono-symfile.c: Added back support for locals.
25599
25600 2002-10-14  Martin Baulig  <martin@gnome.org>
25601
25602         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
25603         MONO_TYPE_VOID.
25604
25605 2002-10-14  Martin Baulig  <martin@gnome.org>
25606
25607         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
25608         mono_class_get() instead of looking in the class cache. 
25609
25610 2002-10-13  Martin Baulig  <martin@gnome.org>
25611
25612         * debug-mono-symfile.c: Set version number to 28, include the
25613         signature in method names.
25614
25615 2002-10-13  Martin Baulig  <martin@gnome.org>
25616
25617         * debug-mono-symfile.h: Set version number to 27.
25618
25619 2002-10-11  Martin Baulig  <martin@gnome.org>
25620
25621         * gc.c: Don't register/unregister NULL pointers as disappearing links.
25622
25623 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
25624
25625         * metadata.c, metadata.h: added helper function to allocate signatures.
25626
25627 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25628
25629         * icall.c: added internal call to get the location of machine.config.
25630
25631 2002-10-08  Martin Baulig  <martin@gnome.org>
25632
25633         * debug-mono-symfile.c: Ignore classes with a pending init for the
25634         moment.
25635
25636 2002-10-03  Dick Porter  <dick@ximian.com>
25637
25638         * threads.c: Freebsd pthread_t is a pointer
25639
25640 2002-10-03  Dick Porter  <dick@ximian.com>
25641
25642         * socket-io.c: Implemented GetHostName_internal
25643
25644 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25645
25646         * mono-config.c:
25647         (mono_config_parse_file): don't leak the text.
25648
25649 2002-10-02  Martin Baulig  <martin@gnome.org>
25650
25651         * debug-mono-symfile.c: Added support for methods.
25652
25653 2002-10-01  Martin Baulig  <martin@gnome.org>
25654
25655         * debug-mono-symfile.c: Don't emit methods and line numbers for
25656         the dynamic symbol file, just write the type table.  We can easily
25657         have an external helper program which creates a symbol file for an
25658         IL file.        
25659
25660 2002-10-01  Dick Porter  <dick@ximian.com>
25661
25662         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
25663         Only add the handle to the cleanup array when we're about to
25664         launch the thread.  Bug 31425 deadlocked when the test was run on
25665         mono under w32.
25666
25667 2002-10-01  Martin Baulig  <martin@gnome.org>
25668
25669         * debug-mono-symfile.c: Added support for properties.
25670
25671 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25672
25673         * reflection.c: unaligned store fix from Mark Crichton
25674         <crichton@gimp.org>.
25675
25676 2002-09-27  Martin Baulig  <martin@gnome.org>
25677
25678         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
25679         New interncall.
25680
25681 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
25682
25683         * assembly.h, assembly.c: use a sane API to hook into the assembly
25684         loading process instead of a useless special-purpouse hack
25685         (ngen needs a hook, too, for example).
25686
25687 2002-09-27  Dick Porter  <dick@ximian.com>
25688
25689         * threads.c (mono_thread_init): Call GetCurrentProcess() so
25690         io-layer can set up some process handle info.  Not needed on w32,
25691         but doesn't hurt either.
25692
25693         * process.c: Pass the program name in the second parameter to
25694         CreateProcess, so the path is searched.  Include the working
25695         directory. Implemented process name, process enumeration, and some
25696         process detail internal calls.
25697         
25698         * icall.c: Added internal calls for process lookup, and some
25699         process details
25700
25701 2002-09-26  Martin Baulig  <martin@gnome.org>
25702
25703         * assembly.c (mono_install_open_assembly_hook): New global
25704         function to install a function to be invoked each time a new
25705         assembly is loaded.
25706         (mono_assembly_open): Run this callback function if set.
25707
25708         * debug-mono-symfile.c: Put back line numbers for the dynamic
25709         symbol file and also record the .il file as source file.  This
25710         allows us to install the temporary symbol file as `file.dbg' just
25711         like a compiler-generated one.
25712
25713 2002-09-26  Nick Zigarovich <nick@chemlab.org>
25714
25715         * Corrected typo in gc.c (BOHEM vs BOEHM).
25716
25717 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25718
25719         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
25720         GetProperties. Also avoid calling g_slist_length in GetProperties and
25721         GetMethods.
25722
25723 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
25724
25725         * reflection.c: avoid unaligned stores (bug spotted by
25726         Mark Crichton  <crichton@gimp.org>).
25727
25728 2002-09-25  Martin Baulig  <martin@gnome.org>
25729
25730         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
25731         instead of guint64 for addresses and added prologue/epilogue info.
25732
25733 2002-09-25  Martin Baulig  <martin@gnome.org>
25734
25735         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
25736         store line number info.  For the dynamic symbol file, we only need
25737         to provide the JIT generated dynamic line number info for the dynamic
25738         symbol file.
25739
25740 2002-09-25  Martin Baulig  <martin@gnome.org>
25741
25742         * debug-mono-symfile.h: Incremented version number.
25743
25744 2002-09-24  Martin Baulig  <martin@gnome.org>
25745
25746         * class.c (mono_debugger_class_init_func): New global function
25747         pointer variable.
25748         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
25749         call it.
25750
25751         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
25752         function.  This is called via the mono_debugger_class_init_func
25753         hook to add all types to the dynamic type table.
25754         (ves_icall_MonoDebugger_GetType): New interncall to get a class
25755         from its metadata token.
25756
25757         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
25758         New interncall for the debugger.
25759
25760 2002-09-24  Nick Drochak <ndrochak@gol.com>
25761
25762         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
25763         before using it in case it is null.
25764         
25765 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25766
25767         * metadata.c: allow custom modifiers in local var signatures
25768         (bug spotted by Zoltan Varga).
25769
25770 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25771
25772         * class.c: deal with the <Module> class that may have a NULL vtable.
25773         Eliminate warnings.
25774
25775 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25776
25777         * image.c, image.h: more strong name helpers.
25778         * monosn.c: more work: convert pem keys to cryptoapi format.
25779
25780 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
25781
25782         * string-icalls.c: speedup IndexOf.
25783
25784 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25785
25786         * icall.c: updates from Zoltan.2.Varga@nokia.com.
25787
25788 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
25789
25790         * icall.c: cleanup: use mono_object_domain ().
25791
25792 2002-09-23  Martin Baulig  <martin@gnome.org>
25793
25794         * debug-mono-symfile.c: Improved type support.
25795
25796 2002-09-22  Martin Baulig  <martin@gnome.org>
25797
25798         * debug-mono-symfile.c: Added support for reference types and strings.
25799
25800 2002-09-22  Martin Baulig  <martin@gnome.org>
25801
25802         * debug-mono-symfile.c: Started to work on the type table.
25803
25804 2002-09-21  Martin Baulig  <martin@gnome.org>
25805
25806         * debug-mono-symfile.c: Largely reworked the symbol table format.
25807         The symbol table is now incrementally updated each time a new
25808         method is added.  We're now also using our own magic and version
25809         so that you don't need to recompile all your classes if the
25810         dynamic table changes.
25811         (mono_debug_update_mono_symbol_file): Removed.
25812         (mono_debug_symfile_add_method): New function to add a method.
25813
25814 2002-09-21  Martin Baulig  <martin@gnome.org>
25815
25816         * icall.c
25817         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
25818         New interncall.
25819
25820         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
25821         New interncall to get a method from its metadata token.
25822
25823 2002-09-21  Martin Baulig  <martin@gnome.org>
25824
25825         * debug-mono-symfile.c: Create type table.
25826
25827 2002-09-20  Martin Baulig  <martin@gnome.org>
25828
25829         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
25830
25831 2002-09-20  Martin Baulig  <martin@gnome.org>
25832
25833         * debug-mono-symfile.c: Provide information about params and locals.
25834
25835 2002-09-20  Martin Baulig  <martin@gnome.org>
25836
25837         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
25838         New interncall.
25839
25840         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
25841         interncall to get a method from its metadata token.
25842
25843 2002-09-20  Martin Baulig  <martin@gnome.org>
25844
25845         * debug-mono-symfile.c: Added a few checks for method->header
25846         being non-NULL.  This should never happen, but for the moment
25847         let's use a g_warning() rather than a g_assert().
25848
25849 2002-09-19  Mark Crichton  <crichton@gimp.org>
25850
25851         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
25852         even if support for it isn't present.  Added an #ifdef to fix this.
25853
25854         * socket-io.c: Added checks back for Solaris support.
25855
25856 2002-09-19  Martin Baulig  <martin@gnome.org>
25857
25858         * debug-mono-symfile.c (read_string, write_string): Reflect latest
25859         changes in the symbol file format.
25860
25861 2002-09-18  Martin Baulig  <martin@gnome.org>
25862
25863         * debug-mono-symfile.c: Set version number to 21.
25864
25865 2002-09-18  Dick Porter  <dick@ximian.com>
25866
25867         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
25868         on netbsd.  Fixes bug 30051.
25869
25870 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25871
25872         * reflection.c:
25873         (set_version_from_string): little fix.
25874
25875 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25876
25877         * monosn.c, Makefile.am: added strong name utility.
25878         * reflection.h, reflection.c: implemented delayed signing,
25879         locale, version and hash id assembly attributes.
25880
25881 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
25882
25883         * loader.c, metadata.c: load param attributes in signatures.
25884
25885 2002-09-16  Martin Baulig  <martin@gnome.org>
25886
25887         * debug-mono-symfile.c: Added string table with all method names.
25888
25889 2002-09-14  Martin Baulig  <martin@gnome.org>
25890
25891         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
25892         fast method lookup.
25893
25894 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
25895
25896         * reflection.c: record the public key token of referenced assemblies.
25897
25898 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
25899
25900         * image.c, image.h: added functions to get the strong name and the
25901         public key of an assembly.
25902         * pedump.c: use them.
25903
25904 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
25905
25906         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
25907
25908 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
25909
25910         * marshal.c (mono_marshal_get_managed_wrapper): Added
25911         MONO_TYPE_BOOLEAN 
25912
25913 2002-09-11  Martin Baulig  <martin@gnome.org>
25914
25915         * gc.c: Call GC_unregister_disappearing_link() on all links when
25916         finalizing them, this is necessary to aviod a crash in boehm's
25917         finalize handler.
25918
25919 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25920
25921         * gc.c: handle GetTarget for finalized objects spotted and fixed by
25922         nick@chemlab.org.
25923
25924 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
25925
25926         * icall.c: implemented MonoType::Module.
25927         * reflection.c, reflection.h: mono_module_get_object () from
25928         Tomi Pakarinen <tomi.pakarinen@welho.com>.
25929
25930 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25931
25932         * icall.c: ignore overridden methods in GetMethods ().
25933         Fix for FieldInfo::SetValue().
25934         * object.c: handle float/double in runtime invoke.
25935
25936 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25937
25938         * object.c: allow a constructor to be called again on an object.
25939
25940 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25941
25942         * class.h, class.c: move field layout code to it's own function and
25943         export it. Get an interface id earlier. Move fields in MonoClass
25944         so they are more cache friendly and align the bitfields.
25945         * loader.c: temporary handle get_param_names() for a runtime method.
25946         * reflection.c, reflection.h: more code to handle runtime creation of
25947         types.
25948
25949 2002-09-09  Martin Baulig  <martin@gnome.org>
25950
25951         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
25952         signature with the pinvoke field being set for the actual call.
25953
25954 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
25955
25956         * icall.c: removed some unused icalls. Start of map of glib charsets
25957         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
25958
25959 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
25960
25961         * debug-helpers.c: break infinite loop (found and fixed by
25962         Holger Arnold <harnold@gmx.de>).
25963
25964 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
25965
25966         * icall.c: target may be null in create_delegate.
25967
25968 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25969
25970         * marshal.c: handle a boolean return type.
25971
25972 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25973
25974         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
25975
25976 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
25977
25978         * gc.c: fix weakreferences.
25979
25980 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
25981
25982         * icall.c: added icall to get default codepage.
25983
25984 2002-09-03  Dick Porter  <dick@ximian.com>
25985
25986         * threads.h: 
25987         * threads.c: Use MonoThread instead of MonoObject where
25988         apropriate.
25989
25990         Store running thread objects in a hash table, so that we have all
25991         the info to hand when waiting for them to finish
25992         (means we don't need OpenThread() any more, so mingw builds should
25993         be fully functional again.)
25994
25995         * verify.c:
25996         * object.h: Added thread ID to MonoThread
25997
25998 2002-09-03  Martin Baulig  <martin@gnome.org>
25999
26000         * icall.c (System.Reflection.Assembly::get_location): New interncall.
26001
26002 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26003
26004         * icall.c: fixed leak in get_temp_path. Thanks lupus.
26005
26006 2002-09-03  Martin Baulig  <martin@gnome.org>
26007
26008         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
26009         argument to store the end address of the disassembled instruction.
26010
26011         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
26012         here from debug-symfile.h.
26013         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
26014         JIT into this struct.
26015         (MonoSymbolFile): Added `char *image_file' field.
26016         (MonoDebugGetMethodFunc): Removed.
26017         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
26018         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
26019         (mono_debug_find_method): New method.
26020
26021         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
26022         create a full symbol file.
26023         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
26024         and static symbol files.
26025         (mono_debug_find_method): The symbol file keeps an internal method hash,
26026         call this to get a MonoDebugMethodInfo from a MonoMethod.
26027
26028         * debug-symfile.[ch]: Removed.
26029
26030 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
26031
26032         * image.c (do_mono_image_open): Remove linker version check.
26033
26034 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
26035
26036         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
26037         wrappers for instance methods.
26038         
26039 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26040
26041         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
26042
26043 2002-08-28  Dick Porter  <dick@ximian.com>
26044
26045         * Makefile.am: Export HOST_CC for w32 builds
26046
26047 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
26048
26049         * file-io.c process.c: MonoString are null terminated, no
26050         need for mono_string_to_utf16() anymore.
26051
26052 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
26053
26054         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
26055
26056 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
26057
26058         * icall.c, reflection.h: speedup System.MonoType.
26059
26060 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
26061
26062         * reflection.c: allow null as the value of a string argument in
26063         custom attributes constructors.
26064
26065 2002-08-27  Martin Baulig  <martin@gnome.org>
26066
26067         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
26068         `trampoline_address' field.
26069
26070 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
26071
26072         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
26073         check (fixes bug #29486) 
26074
26075 2002-08-27  Martin Baulig  <martin@gnome.org>
26076
26077         * debug-mono-symfile.c: Changed the file format in a way that allows us
26078         open it read-only and to use a specially malloced area for all the
26079         dynamic data.  We can now also generate a symbol file on-the-fly if we're
26080         debugging IL code and there is no MCS generated symbol file for it.
26081
26082 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
26083
26084         * object.c: added a define for a good string and array
26085         creation speedup (not enabled by default because we need to deal with
26086         the synch stuff).
26087
26088 2002-08-26  Martin Baulig  <martin@gnome.org>
26089
26090         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
26091         function to create a dynamic symbol file.  This is used by the
26092         debugger to create a symbol file for IL code on-the-fly.
26093
26094 2002-08-26  Martin Baulig  <martin@gnome.org>
26095
26096         * loader.c (mono_lookup_pinvoke_call): Include the error message
26097         from g_module_error() in the error message.
26098
26099 2002-08-24  Martin Baulig  <martin@gnome.org>
26100
26101         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
26102         function to update the symbol file.  The symbol file is mmap()ed
26103         writable, but private.  This allows us to install the symbol file
26104         together with the assembly.
26105
26106 2002-08-24  Martin Baulig  <martin@gnome.org>
26107
26108         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
26109         but they can read the new symbol file format which mcs is now creating.
26110
26111         * debug-symfile.c (mono_debug_find_source_location): Moved to
26112         debug-mono-symfile.c; this is now operating on the new symbol file.
26113
26114 2002-08-23  Martin Baulig  <martin@gnome.org>
26115
26116         * debug-helpers.c (mono_method_desc_from_method): New function to get
26117         a MonoMethodDesc from a MonoMethod.
26118
26119 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
26120
26121         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
26122         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
26123
26124 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
26125
26126         * string-icalls.[ch]: make helper methods static.
26127
26128 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26129
26130         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
26131         types to it and to SetValueInternal.
26132
26133         * object.c: Moved handle_enum label to its proper place. This was the
26134         f... bug! ;-)
26135
26136         This time i compiled mcs and gtk-sharp and they both work.
26137
26138 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26139
26140         * icall.c: reverted partially my previous patch until 
26141         object.c:set_value handles enums correcly.
26142
26143 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26144
26145         * icall.c:
26146         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
26147         (ves_icall_System_Environment_get_MachineName): removed warning when
26148         compiling under cygwin.
26149
26150 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
26151
26152         * object.c: fixed field_get_value() for reference types.
26153
26154 2002-08-22  Dick Porter  <dick@ximian.com>
26155
26156         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
26157         Don't free a buffer while it's still needed.  Patch from Jonathan
26158         Liger <Jonathan.liger@wanadoo.fr>
26159
26160 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
26161
26162         * icall.c (ves_icall_System_Environment_get_Platform): Add new
26163         internal call.
26164
26165 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
26166
26167         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
26168         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
26169
26170         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
26171         we call unmanaged code which throws exceptions.
26172
26173 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
26174
26175         * appdomain.h: added per-domain entry_assembly.
26176         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
26177         arguments.
26178         * icall.c: Assembly::GetEntryAssembly icall.
26179         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
26180         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
26181
26182 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
26183
26184         * appdomain.h, gc.c: added mono_domain_finalize ().
26185
26186 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26187
26188         * object.c:
26189         (mono_print_unhandled_exception): changed g_warning by g_printerr
26190         because g_log has a 1024 characters limit (yeah, i got a big stack
26191         trace). Don't print exception name, that should be in ToString 
26192         returned string.
26193
26194 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26195
26196         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
26197         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
26198
26199 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26200
26201         * object.c:
26202         (mono_print_unhandled_exception): after previous commit, i realized
26203         that MS calls ToString on the exception. I changed this function to
26204         do that. This way we get stack_trace for free.
26205
26206 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26207
26208         * object.c:
26209         (mono_print_unhandled_exception): invoke Message property instead of
26210         getting 'message' field from Exception. Don't allocate memory for
26211         'trace' and 'message' if not needed.
26212
26213 2002-08-18  Dick Porter  <dick@ximian.com>
26214
26215         * unicode.c: Fix asserts to match Encoder.cs checks
26216
26217 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
26218
26219         * marshal.c: fix unaligned store issue and a few wrong
26220         opcode argument types.
26221
26222 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26223
26224         * icall.c: added GetUninitializedObjectInternal internal call.
26225
26226 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
26227
26228         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
26229         to the right domain.
26230
26231 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
26232
26233         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
26234
26235         * class.c (class_compute_field_layout): set blittable to false for Strings
26236
26237         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
26238
26239 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
26240
26241         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
26242         first chunk of code to create types at runtime. Code to
26243         handle ReflectedType/DeclaringType. Make reflection handles
26244         domain specific.
26245
26246 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
26247
26248         * class.c: set correct name in arrays.
26249
26250 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
26251
26252         * appdomain.c (mono_domain_transfer_object): make it work with
26253         valuetypes. bug fixes.
26254
26255 2002-08-12  Dick Porter  <dick@ximian.com>
26256
26257         * object.h: Rename some parameters to avoid c++ keywords (Patch
26258         from Joseph Wenninger <kde@jowenn.at>)
26259
26260 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
26261
26262         * icall.c: added icall to implement Assembly.GetFile*.
26263
26264 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
26265
26266         * reflection.h, reflection.c: code to embed managed resources.
26267
26268 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
26269
26270         * class.c: move all the type size stuff into
26271         class_compute_field_layout().
26272
26273 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
26274
26275         * class.c: ensure enums have always the correct instance size.
26276         * unicode.c: remove wrong assert.
26277
26278 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
26279
26280         * assembly.c: fix mem corruption issue.
26281         * image.h, image.c: added mono_image_get_resource () to access
26282         managed resources.
26283         * icall.c: implemented Assembly.EntryPoint property and some
26284         Managed Resources related internalcalls.
26285
26286
26287 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
26288
26289         * image.c, image.h: impemented mono_image_get_entry_point ().
26290         * appdomain.c: use mono_image_get_entry_point.
26291
26292 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
26293
26294         * reflection.c: support the object type argument when loading
26295         custom attributes.
26296
26297 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
26298
26299         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
26300         String as return type.
26301
26302 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
26303
26304         * reflection.c: fix encoding of named args for custom attrs to match
26305         the ms implementation. Read them back when instantiating custom
26306         attributes.
26307
26308 2002-08-02  Radek Doulik  <rodo@ximian.com>
26309
26310         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
26311         by Dietmar as quick fix
26312         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
26313         16 as stack size, used on more places as quick fix before Dietmar
26314         will fix it properly
26315
26316 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
26317
26318         * object.h, object.c: added accessors for fields and properties.
26319
26320 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
26321
26322         * class.c, class.h: made mono_class_get_field_from_name ()
26323         loop on parent types.
26324         Added mono_class_get_property_from_name ().
26325
26326 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26327
26328         * class.c, class.h: move the code to setup the type vtable in its own
26329         function so that it can be reused also for types created at runtime.
26330         Eliminate the "class" identifier from the header file.
26331         * reflection.c: setup the vtable for enums so that we can create
26332         objects for use in SetConstant ().
26333
26334 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
26335
26336         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
26337         instead of the delegate itself as this pointer (bug #28383)
26338
26339 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
26340
26341         * marshal.c (mono_marshal_get_managed_wrapper): added return type
26342         conversions.
26343
26344 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26345
26346         * loader.c: don't set the pinvoke bit on icalls.
26347
26348 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
26349
26350         * debug-helpers.c (mono_method_full_name): only print a number to
26351         indicate wrapper type (so that the output is more readable in traces).
26352
26353 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
26354
26355         * class.c (mono_class_init): include method override patch from Paolo
26356
26357 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
26358
26359         * icall.c: fixed GetTypeCode().
26360
26361 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
26362
26363         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
26364         use real delegate invoke function to make it work with multicast
26365         delegates (fix bug# 28291).
26366
26367 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
26368
26369         * object.c: load constant strings.
26370
26371 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26372
26373         * reflection.c: no magic numbers.
26374         * tabledefs.h: security action enum.
26375
26376 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
26377
26378         * assembly.c: fix possible memory corruption.
26379
26380 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
26381
26382         * reflection.h, reflection.c: added support for linking resources.
26383         * verify.c: check we have an updated corlib.
26384
26385 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
26386
26387         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
26388         string arrays.
26389         (mono_marshal_string_array): null terminate unmanaged string arrays.
26390         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
26391
26392 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
26393
26394         * icall.c: Type.GetType () can now return also types from the
26395         calling assembly.
26396
26397 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
26398
26399         * loader.h, loader.c: stack walking support.
26400         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
26401         GetCallingAssembly.
26402
26403 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
26404
26405         * marshal.c: added optimisations for blittable types 
26406
26407         * class.c (mono_array_class_get): do not set blittable attribute on arrays
26408         (mono_class_setup_mono_type): set blittable attribute for single
26409         and double.
26410
26411         * marshal.c (mono_string_utf8_to_builder): impl.
26412         (mono_string_builder_to_utf8): impl.
26413         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
26414
26415 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
26416
26417         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
26418         (mono_marshal_get_managed_wrapper): impl. byref types
26419
26420 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26421
26422         * icall.c:
26423         (search_method): don't display debug message. 
26424
26425 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
26426
26427         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
26428
26429 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
26430
26431         * appdomain.c: set the missing filename when throwing exception.
26432
26433 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
26434
26435         * metadata.c (mono_type_size): code cleanup
26436         (mono_type_stack_size): removed some test code
26437
26438 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
26439
26440         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
26441         mono_get_exception_file_not_found now.
26442
26443         * exception.c (mono_exception_from_name_two_strings): New version
26444         that will call a constructor with two string arguments. 
26445         (mono_get_exception_file_not_found): New helper routine, used to
26446         report file-not-found errors.
26447
26448 2002-07-20  Dick Porter  <dick@ximian.com>
26449
26450         * process.h:
26451         * process.c: Pass file handles to CreateProcess
26452         
26453         * icall.c:
26454         * file-io.h:
26455         * file-io.c: Implemented CreatePipe
26456
26457 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
26458
26459         * metadata.c (mono_get_param_info): set alignment for value types
26460
26461 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
26462
26463         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
26464         Constify mono_domain_assembly_open().
26465         * loader.c: handle null namespace in icalls.
26466
26467 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
26468
26469         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
26470         (emit_str_to_ptr_conv): marshal object as structs
26471
26472         * metadata.c (mono_type_to_unmanaged): marshal object as structs
26473
26474         * marshal.c (mono_marshal_get_runtime_invoke): support value types
26475
26476 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
26477
26478         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
26479         (mono_marshal_get_native_wrapper): we an now return value types
26480
26481 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26482
26483         * verify.c: more checks implemented.
26484
26485 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
26486
26487         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
26488         (fix bug #27695)
26489         (mono_marshal_get_native_wrapper): allow byref arguments
26490         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
26491         impl. PtrToStringXXX methods
26492         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
26493         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
26494         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
26495         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
26496         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
26497
26498 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
26499
26500         * reflection.c: fix buglet in parsing an assembly name.
26501
26502 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
26503
26504         * marshal.c (emit_ptr_to_str_conv): first impl.
26505
26506 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
26507
26508         * object.c, class.h: cache the vtable in the class as suggested by
26509         vargaz@freemail.hu (Zoltan Varga).
26510
26511 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
26512
26513         * class.h, loader.c: added mono_field_from_token().
26514         * verify.c: first cut of type checking code.
26515
26516 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
26517
26518         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
26519
26520 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
26521
26522         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
26523         (fix bug #27782)
26524         (mono_marshal_get_remoting_invoke): impl.
26525         (mono_delegate_begin_invoke): impl.
26526         (mono_mb_emit_save_args): impl.
26527         (mono_delegate_end_invoke): impl.
26528         (mono_marshal_get_delegate_begin_invoke):
26529         (mono_marshal_get_delegate_end_invoke):
26530         (mono_marshal_get_delegate_invoke): generate a special name for
26531         those methods (including the signature) and associate them whith
26532         the delegate class. 
26533
26534 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
26535
26536         * reflection.[ch]: 
26537         (mono_reflection_type_from_name): now it has a MonoImage parameter
26538         which is used as the default image to search the type in. If the image
26539         is NULL or getting the type from it fails, it defaults to corlib.
26540
26541         * icall.c: changed 1 call to mono_reflection_type_from_name to match
26542         new parameter.
26543
26544 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26545
26546         * reflection.c: update the parameter table index.
26547
26548 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
26549
26550         * domain.c: don't include the mark byte in the string hash.
26551
26552 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
26553
26554         * icall.cs: icall for Type.GetTypeCode ().
26555         * verify: a couple of fixes and disabled local initialization checks.
26556
26557 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
26558
26559         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
26560
26561         * debug-helpers.c (mono_method_full_name): print the type of the
26562         runtime wrapper
26563
26564         * metadata.c (mono_signature_hash): a hash function for signatures
26565         (mono_signature_hash): better hash algorithm
26566
26567         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
26568
26569         * debug-helpers.c (mono_method_full_name): this can now generate
26570         method names with signatures
26571
26572         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
26573         method dont have this pointers.
26574
26575 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
26576
26577         * reflection.c: fixup typebuilder tokens.
26578         * image.c: fix buglet.
26579         * marshal.h: remove whitespace.
26580         * metadata.h, metadata.c: reinstate code that was removed.
26581         * verify.c: handle catch directives and fix another couple of bugs.
26582
26583 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
26584
26585         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
26586         (mono_marshal_get_native_wrapper): make it comp. with the old code
26587         (mono_marshal_get_native_wrapper): support boolean
26588         (mono_marshal_get_managed_wrapper): support more types
26589
26590 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
26591
26592         * class.c (class_compute_field_layout): compute class->blittable attribute.
26593
26594 2002-07-09  Dick Porter  <dick@ximian.com>
26595
26596         * threads.c: Make the thread cleaning up cope with threads that
26597         call ExitThread()
26598
26599 2002-07-08  Radek Doulik  <rodo@ximian.com>
26600
26601         * reflection.c (method_encode_code): use non-translated values to
26602         compute finally_start, this fixes exception handling on ppc, yay!
26603
26604         * decimal.h (struct signscale): fix endianess
26605
26606 2002-07-07  Radek Doulik  <rodo@ximian.com>
26607
26608         * reflection.c: swap box_val and not val
26609
26610 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
26611
26612         * reflection.c, reflection.h: handle full assembly info in type name.
26613         Handle Type arguments when loading custom attributes.
26614         * icall.c: updated to use new mono_reflection_type_from_name () method.
26615
26616 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26617
26618         * loader.c:
26619         (method_from_memberref): also print assembly name when method not found.
26620
26621 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26622
26623         * icall.c:
26624         (ves_icall_TypeGetProperties): fixed bug #27473. 
26625
26626 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26627
26628         * reflection.c: display image name and token when cannot find the
26629         .ctor for an attribute.
26630
26631 2002-07-05  Martin Baulig  <martin@gnome.org>
26632
26633         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
26634
26635 2002-07-04  Dick Porter  <dick@ximian.com>
26636
26637         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
26638         compile on mingw.  This will cause mingw builds to not wait for
26639         subthreads to terminate after the main thread does.  I've lodged a
26640         bug with the mingw developers for them to wrap OpenThread().
26641
26642 2002-07-03  Dick Porter  <dick@ximian.com>
26643
26644         * threads.c: Store thread IDs instead of handles, because
26645         GetCurrentThread() returns a pseudohandle and therefore stores
26646         useless values.  mono_thread_cleanup() continues checking the
26647         array of threads until it is empty, to cope with subthreads
26648         spawning new threads after the main thread has finished.
26649
26650         * profiler.h:
26651         * profiler.c:
26652         * profiler-private.h: Pass the thread ID to thread profiler
26653         functions, instead of a handle
26654
26655 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
26656
26657         * verify.c: fixes to make it more usable.
26658         * pedump.c: added --verify code to verify IL code in an assembly.
26659
26660 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26661
26662         * reflection.c: turn errors into warnings to allow compiling corlib.
26663
26664 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
26665
26666         * reflection.c: add special cases to compile corlib.
26667
26668 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
26669
26670         * reflection.c: handle properties with only a set method.
26671
26672 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
26673
26674         * opcodes.h: add enum with opcodes in opval order.
26675
26676 2002-07-01  Dick Porter  <dick@ximian.com>
26677         
26678         * object.h:
26679         * object.c (mono_runtime_run_main): Removed unneeded argument
26680
26681 2002-06-28  Martin Baulig  <martin@gnome.org>
26682
26683         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
26684
26685 2002-06-27  Dick Porter  <dick@ximian.com>
26686
26687         * threads.c: Store the handle in both the parent thread and in the
26688         subthread, to minimise the time between starting a new thread and
26689         storing its ID.
26690
26691 2002-06-26  Dick Porter  <dick@ximian.com>
26692
26693         * appdomain.c (mono_runtime_cleanup): Close the socket library
26694         after all the threads have finished, not before
26695
26696 2002-06-26  Martin Baulig  <martin@gnome.org>
26697
26698         * debug-symfile.c (mono_debug_find_source_location): Added
26699         `guint32 *line_number' argument.  If it's not NULL, store the line number
26700         there and return the file name without the line number.
26701
26702 2002-06-25  Dick Porter  <dick@ximian.com>
26703
26704         * icall.c:
26705         * process.h:
26706         * process.c: Process forking and other support functions
26707
26708 2002-06-25  Dick Porter  <dick@ximian.com>
26709
26710         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
26711         things dont happen when the image is closed.
26712         (mono_image_lookup_resource): Walk the resource section looking
26713         for a particular entry
26714
26715         * cil-coff.h: PE resource section decoding
26716
26717 2002-06-25  Dick Porter  <dick@ximian.com>
26718         
26719         * assembly.h:
26720         * assembly.c: 
26721         (mono_assembly_foreach): Accessor functions to walk the list of
26722         loaded assemblies
26723         (mono_assembly_set_main):
26724         (mono_assembly_get_main): Process methods need to know which
26725         assembly is the "main" one
26726
26727         * object.c (mono_runtime_run_main): Record the main assembly
26728
26729         * debug-helpers.c: Fix typo
26730
26731 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
26732
26733         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
26734         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
26735
26736 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
26737
26738         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
26739
26740 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
26741
26742         * image.c (do_mono_image_open): Initialize reference count,
26743         otherwise we leak the MonoImage.
26744
26745 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
26746
26747         * reflection.c: small tweak to handle self-hosting.
26748
26749 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
26750
26751         * reflection.c: fix type name parse code.
26752
26753 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26754
26755         * reflection.c: break out of the loop.
26756         * image.c: special case corlib.
26757
26758 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26759
26760         * reflection.c: add all the custom attrs at the end to ensure the
26761         ctors have been properly initialized when the attributes are defined
26762         in the current assembly.
26763
26764 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
26765
26766         * reflection.c: handle correctly multiple-nested types.
26767
26768 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
26769
26770         * row-indexes.h: fix typos.
26771         * reflection.c: adjust for typos and fix method_def_or_ref
26772         encoding in MethodImpl table.
26773
26774 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
26775
26776         * reflection.c: fix entry point patching (thanks Serge!).
26777
26778 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
26779
26780         * verify.c: add check for System.Exception
26781
26782 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
26783
26784         * image.c, class.c: minifix for code just c&p'ed.
26785         * reflection.c: warning fix.
26786         * object.h, loader.h, domain.c: load also StringBuilder.
26787
26788 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
26789
26790         * marshal.h, marshal.c: some support code to handle complex marshaling.
26791
26792 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26793
26794         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
26795         Better signatures with vtable error dump.
26796
26797 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
26798
26799         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
26800
26801 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
26802
26803         * icall.c (ves_icall_Type_GetField): impl.
26804
26805 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26806
26807         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
26808         to retrieve a marshal description blob for a field or param.
26809
26810 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
26811
26812         * reflection.h, reflection.c: change order of nested type emission
26813         to avoid table corruption. The NestedTypes table is sorted.
26814         * icall.c: change order of GetConstructor results to workaround mcs bug.
26815
26816 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
26817
26818         * reflection.h, reflection.c: handle field and param marshal
26819         information.
26820
26821 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
26822
26823         * icall.c, marshal.c marshal.h: more Marshal class implementation.
26824
26825 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26826
26827         * reflection.c: fix call convention.
26828
26829 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26830
26831         * reflection.h, reflection.c: mono_image_get_memberref_token()
26832         takes a type instead of a class, now. Added
26833         mono_image_get_array_token() to create tokens for the special
26834         multi-dim array methods.
26835
26836 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
26837
26838         * assembly.c: handle modules (no assembly table). Split
26839         loading references in its own function.
26840         * class.c: handle moduleref resolution scope.
26841         * image.c, image.h: cache module name in image.
26842
26843 2002-06-07  Martin Baulig  <martin@gnome.org>
26844
26845         * reflection.c (mono_image_get_type_info): Only add a class layout entry
26846         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
26847
26848 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
26849
26850         * icall.c: more signature fixes that used uint instead of int.
26851
26852 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26853
26854         * reflection.c: fixed signature of field refs.
26855
26856 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
26857
26858         * class.c, reflection.c: handle typerefs of nested types
26859         (both on read and when writing files).
26860
26861 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
26862
26863         * icall.c: fix method signatures that tried to workaround the previous
26864         typo, d'oh!
26865
26866 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
26867
26868         * debug-helpers.c: fix typo.
26869
26870 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
26871
26872         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
26873         rewrote the PE/COFF writing code (our programs are understood by the
26874         ms runtime, now).
26875
26876 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
26877
26878         * gc.c, gc.h, icall.c: weakreference support.
26879
26880 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26881
26882         * Makefile.am, mono-config.c: use $(sysconfdir).
26883
26884 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26885
26886         * icall.c: changed default precision of Double.ToString() to 15.
26887         Fixed memory leak. Unified with Single.ToString.
26888
26889 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
26890
26891         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
26892
26893 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
26894
26895         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
26896         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
26897         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
26898         and myself.
26899
26900 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
26901
26902         * debug-symfile.c, sysmath.c: yet more compilation fixes.
26903
26904 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26905
26906         * reflection.c, socket-io.c: more compilation fixes.
26907
26908 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
26909
26910         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
26911         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
26912         unicode.c: warning and compiler compatibility fixes.
26913
26914 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
26915
26916         * class.h, metadata.c: fixed warnings/compilation errors.
26917
26918 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
26919
26920         * Makefile.am, mono-config.c, mono-config.h: configuration file
26921         support routines.
26922         * loader.c, loader.h: make Dll mapping configurable at runtime in the
26923         config file. Export methods to insert and lookup mappings.
26924
26925 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
26926
26927         * reflection.c: handle types and boxed objects in custom attr
26928         constructors.
26929
26930 2002-05-30  Martin Baulig  <martin@gnome.org>
26931
26932         * debug-symfile.c
26933         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
26934
26935 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
26936
26937         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
26938         to lookup the implmap row for a P/Invoke method.
26939         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
26940         P/Invoke method from the runtime on an as needed basis.
26941
26942 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
26943
26944         * metadata.c (mono_metadata_parse_signature): impl.
26945
26946 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
26947
26948         * class.c: handle .pack directive.
26949
26950 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
26951
26952         * object.c: initialize static fields with RVA data.
26953
26954 2002-05-25  Martin Baulig  <martin@gnome.org>
26955
26956         * debug-symfile.c
26957         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
26958
26959 2002-05-24  Martin Baulig  <martin@gnome.org>
26960
26961         * debug-symfile.c
26962         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
26963         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
26964         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
26965
26966 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
26967
26968         * object.c: special case string ctros in invoke.
26969         * gc.c: silly whitespace changes.
26970
26971 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
26972
26973         * threadpool.[ch]: impl. a threadpool that can
26974         be used by mint and mono.
26975
26976 2002-05-22  Martin Baulig  <martin@gnome.org>
26977
26978         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
26979         The first argument is now a `MonoReflectionModuleBuilder *', the return
26980         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
26981         `methods' field to get the method builder.  The `token' argument is the
26982         unfixed token.
26983
26984         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
26985         invalid characters instead of g_assert_not_reached()ing.  This seems
26986         to be the behaviour of mscorlib.
26987
26988 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
26989
26990         * object.c (mono_runtime_invoke_array): applied patch from Rachel
26991         Hestilow to fix bug #25104
26992
26993 2002-05-21  Martin Baulig  <martin@gnome.org>
26994
26995         * debug-symfile.c (mono_debug_find_source_location): New function.
26996         Looks up an IL offset in the line number table and returns the source
26997         location as a string.
26998
26999 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27000
27001         * icall.c:
27002         (mono_double_ToStringImpl): changed %f by %g until we have something
27003         better.
27004
27005 2002-05-21  Nick Drochak  <ndrochak@gol.com>
27006
27007         * icall.c : Use different name for Math.Pow's icall.  Needed to check
27008         parameters first in C#.
27009
27010 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
27011
27012         * icall.c, reflection.h: added icall to get info about an event.
27013
27014 2002-05-20  Radek Doulik  <rodo@ximian.com>
27015
27016         * object.c (mono_value_box): don't use memcpy for boxing on BIG
27017         endian
27018         (mono_value_box): don't use memcpy for small sizes on
27019         architectures with unaligned access
27020
27021 2002-05-20  Martin Baulig  <martin@gnome.org>
27022
27023         * reflection.c (mono_reflection_setup_internal_class): Don't crash
27024         if `tb->parent == NULL'.
27025         (mono_reflection_create_internal_class): New function.  This is
27026         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
27027         for enum types.
27028
27029         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
27030         New interncall.
27031
27032 2002-05-19  Martin Baulig  <martin@gnome.org>
27033
27034         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
27035         argument to get the length, don't default to the array length.
27036
27037 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
27038
27039         * assembly.c (mono_assembly_setrootdir): New function used to
27040         override the MONO_ASSEMBLIES directory.
27041
27042 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
27043
27044         * icall.c: ValueType_GetHashCode() initialize local var.
27045
27046 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
27047
27048         * reflection.c: sort custom attributes table.
27049
27050 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
27051
27052         * reflection.c: support named args in custom attributes (write support).
27053
27054 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
27055
27056         * reflection.c: fix finally position calculation.
27057
27058 2002-05-15  Radek Doulik  <rodo@ximian.com>
27059
27060         * reflection.c: fixed endianess at many places
27061
27062         * icall.c (ves_icall_InitializeArray): comment out debug msg
27063
27064 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
27065
27066         * object.c (mono_unhandled_exception): new function to handle
27067         unhandled exceptions.
27068         (mono_unhandled_exception): call the UnhandledException event.
27069         (mono_runtime_delegate_invoke): impl.
27070
27071 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
27072
27073         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
27074         returns the RVA, not the direct pointer to the data. Handle the case
27075         when the class size is fixed.
27076
27077 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
27078
27079         * reflection.c: fix some endianess issues.
27080
27081 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
27082
27083         * object.c (mono_runtime_invoke): is now able to catch exceptions.
27084
27085         * threads.c (mono_thread_init): added a callback which is invoked
27086         at thread start.
27087
27088 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
27089         
27090         * icall.c: make GetHashCode return non-negative values.
27091
27092 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
27093
27094         * object.c, icall.c, gc.c: revert to address-based hashcode.
27095
27096 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
27097
27098         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
27099
27100 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
27101
27102         * icall.c, class.c: special case <Module>.
27103
27104 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
27105
27106         * icall.c: fix bug in GetNow().
27107
27108 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
27109
27110         * object.c (mono_runtime_class_init): make sure that we call all
27111         static class constructors.
27112
27113 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
27114
27115         * reflection.c: sort methodsemantics table.
27116
27117 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
27118
27119         * reflection.h, reflection.c: honour init locals setting.
27120
27121 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
27122
27123         * icall.c: copied Double ToStringImpl for Single ToStringImpl
27124
27125 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
27126
27127         * reflection.c: support ContructorBuilders in attribute blob creation.
27128
27129 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27130
27131         * reflection.c: some changes to build a binary that can be run
27132         directly in windows.
27133
27134 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
27135
27136         * loader.c: print a big message when an icall can't be found.
27137
27138 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27139
27140         * string-icalls.c: fix bug 24248.
27141
27142 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
27143
27144         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
27145         icall.c, reflection.h: separate assembly loading by pathname and by
27146         assembly name. Use the MONO_PATH env var to search for assemblies.
27147
27148 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
27149
27150         * assembly.c, image.h: add some support for assemblies
27151         with multiple modules.
27152         * class.c, class.h: export mono_class_from_typeref().
27153         * loader.c: remove duplicated code and use mono_class_from_typeref(),
27154         instead.
27155
27156 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
27157
27158         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
27159         documentation says (the ECMA one is correct).
27160
27161 2002-05-02  Dick Porter  <dick@ximian.com>
27162
27163         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
27164         Don't name the synchronisation mutex.
27165
27166 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
27167
27168         * rand.c
27169         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
27170         Make the prototypes match.
27171         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
27172         Same.
27173
27174         * icall.c
27175         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
27176         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
27177         all systems have tm.tm_zone, so use strftime() with %Z to print
27178         the timezone abreviation into a temp string.
27179
27180         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
27181         rather than mono_array_addr() on a MonoString on Big Endian
27182         machines.
27183
27184 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
27185
27186         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
27187         fix bug 24041
27188
27189 2002-04-30  Dick Porter  <dick@ximian.com>
27190
27191         * socket-io.c: Cope with SOCKET being an integer rather than a
27192         pointer now.
27193
27194         * threads.c: Added Thread_free_internal, to deal with thread
27195         handle cleanup.  Moved calls to handle_store() and handle_remove()
27196         to start_wrapper(), so each can only be called once.  Allocate
27197         synchronisation blocks with GC_malloc(), and use GC finalisation
27198         to close the handles.
27199
27200         * icall.c: added System.Threading.Thread::Thread_free_internal
27201
27202 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
27203
27204         * icall.c: support Environment.Exit, CommandLineArgs().
27205
27206 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
27207
27208         * object.c, object.h: added mono_runtime_run_main () and
27209         mono_runtime_get_main_args () for use in System.Environment.
27210
27211 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
27212
27213         * gc.c: fix thinko, enable actual finalization since the jit is now
27214         fixed.
27215
27216 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
27217
27218         * gc.c, object.c: take into account that an object may be offset wrt the address
27219         returned by GC_malloc().
27220
27221 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
27222
27223         * image.c: handle files without entries in the assembly table (modules).
27224
27225 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
27226
27227         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
27228         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
27229         allowed to be null when it's System.Object class setup.
27230
27231 2002-04-27  Martin Baulig  <martin@gnome.org>
27232
27233         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
27234         if `tb->parent == NULL' rather than crashing.
27235
27236 2002-04-28  Nick Drochak  <ndrochak@gol.com>
27237
27238         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
27239         calling acos() where asin() should have been called.
27240
27241 2002-04-26  Martin Baulig  <martin@gnome.org>
27242
27243         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
27244         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
27245         there's a subdirectory called `System', but we don't want to read that
27246         subdirectory as an assembly.
27247
27248 2002-04-25  Martin Baulig  <martin@gnome.org>
27249
27250         * debug-symfile.c: Reflect latest MonoString changes.
27251
27252 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
27253
27254         * rand.c, rand.h: instance method icalls need to have an explicit
27255         this pointer as first argument in the C implementation.
27256
27257 2002-04-25  Nick Drochak <ndrochak@gol.com>
27258
27259         * icall.c: Fix typo in map for GetNonZeroBytes
27260
27261 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
27262
27263         * string-icalls.c : String does now passes unit tests without any 
27264         errors, the following changes has been made:
27265         
27266         Implemented replace methods.
27267         Renaming of methods to (try) follow the standard.
27268         Fixed compare ordinal
27269         Made all memory allocated directly to function instead of via icall function.
27270         Small performance fix in is_in_array function
27271                         
27272  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
27273
27274         c (mono_string_Internal_ctor_charp_int_int):
27275         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
27276         sindex < 0, throw ArgumentOutOfRangeException instead of
27277         ArgumentNullException.
27278
27279         Added new check for length == 0, however
27280         I need to make it return String.Empty from the C code.
27281         
27282         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
27283         that calculate the length for us here.
27284         
27285         (mono_string_Internal_ctor_sbytep_int_int): Replaced
27286         mono_string_new_utf16 with mono_string_new, since value is utf8.
27287
27288 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
27289
27290         * object.c: register the object for finalization if needed.
27291         Allocate one more char in the string for the terminating 0 char.
27292
27293 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
27294
27295         * class.c, class.h, image.c: check if a type implemenst a destructor.
27296         Use the proper key for array class lookups.
27297         * icall.c: register the icalls in the System.GC class.
27298         * gc.c, gc.h: GC-related functions and icalls.
27299
27300 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27301
27302         * icall.c:
27303         * socket-io.c:
27304         * unicode.c: free some strings gotten from mono_string_to_utf8 and
27305         changed a couple of free () by g_free ().
27306
27307         * decimal.c: one-liner in the comments for decimal2string ().
27308
27309 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
27310
27311         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
27312
27313 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
27314
27315         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
27316         * object.c (mono_runtime_invoke_array) : handle null in params
27317
27318 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
27319
27320         * string-icalls.c: fixed bug in split (one off bug)
27321
27322 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
27323
27324         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
27325         * icalls.c: added String::Equals as internal method
27326
27327 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
27328
27329         * threads.c: fixed bug in the double interlocked functions
27330
27331 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
27332
27333         * threads.c: implemented all of the new interlocked icalls.
27334         * string-icalls.c: fix a bug in insert.
27335         * icalls.c: added the icalls for interlocked, removed old string functions.
27336         
27337 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
27338
27339         * loader.c: fix off-by-one error when reading argument names.
27340
27341 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27342
27343         * profiler.c: win32 counter implementation (untested).
27344         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
27345         (the latter needs testing and more complete impl. from win32 folks).
27346
27347 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
27348
27349         * object.c: mono_array_new_full workaround mono_array_class_get
27350         problem.
27351
27352 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
27353
27354         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
27355         * object.h (mono_string_chars): Changed casting type.
27356
27357 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
27358
27359         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
27360                            method signatures to use gunichar2 instead of gint16.
27361
27362 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
27363
27364         * object.h, object.c: domain-specific versions of mono_object_new and
27365         mono_array_new.
27366
27367 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
27368
27369         * object.c: changed String layout
27370
27371         * string-icalls.c (mono_string_Internal_ctor_chara): added
27372         internal string constructors.
27373
27374 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
27375
27376         * threads.c: pass 'this' to the thread start routine.
27377
27378 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27379
27380         * string-icalls.c: fix IndexOf and LastIndexOf. Now
27381         InternalCompareStr don't call twice mono_string_cmp_char for the last
27382         character. Improved performance in mono_string_cmp_char.
27383
27384 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
27385
27386         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
27387         code into its own library: libmonoruntime.
27388
27389 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
27390
27391         * object.h, object.c: changed array format so that szarrays do not
27392         require a bounds structure.
27393         * icall.c, appdomain.c: support for new szarray format.
27394
27395 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
27396
27397         * metadata.c: compare also the retuns type when comparing signatures:
27398         we didn't do this as an optimization since really overloaded methods
27399         must differ also in the arguments, but this doesn't work with
27400         low-level IL code (or when using explicit conversion operators: see
27401         bug#23498 for an example).
27402
27403 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
27404
27405         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
27406
27407 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
27408
27409         * icall.c: make MonoType::GetElementType its own icall.
27410
27411 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
27412
27413         * icall.c: remove MonoMethod_get_Name().
27414         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
27415         object.
27416
27417 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
27418
27419         * string-icalls.c: optimized a few methods.
27420
27421 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
27422
27423         * icall.c: added all new string internal calls
27424         * string-icalls.c: added, new string internal call implementation.
27425         * object.c: added mono_string_new_size for allocating a string a size
27426
27427 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
27428
27429         * object.c (mono_object_isinst): use the same code as in the
27430         optimized x86 version.
27431
27432 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
27433
27434         * profiler.c: TSC-based timer code (faster and more accurate).
27435         Not hooked up in configure, yet (set USE_X86TSC to 1).
27436
27437 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
27438
27439         * profiler.c, profiler.h: track time spent compiling methods.
27440         * threads.c: track thread creation/destruction.
27441
27442 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
27443
27444         * profiler.c, profiler.h, profiler-private.h: profiling interface
27445         and sample implementation. Moved here so that it can be used also by
27446         the jit.
27447
27448 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
27449
27450         * reflection.c, reflection.h: keep types and other handles separate in
27451         the hash tables for referred tokens. Add guid for modules.
27452
27453 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
27454
27455         * assembly.c: fix bugs found with valgrind.
27456         * metadata.h, metadata.c: added mono_metadata_guid_heap().
27457
27458 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
27459
27460         * threads: added icall support for getting current domain for
27461                    the thread.
27462  
27463 2002-04-13  Martin Baulig  <martin@gnome.org>
27464
27465         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
27466         (MonoDebugVarInfo): Added `index' field for register based addresses.
27467         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
27468         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
27469         `MonoDebugVarInfo *params' and `guint32 this_offset' with
27470         `MonoDebugVarInfo *this_var'.
27471
27472         * debug-symfile.c (relocate_variable): New static function to write
27473         a location description for a local variable or method parameter.
27474
27475 2002-04-12  Martin Baulig  <martin@gnome.org>
27476
27477         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
27478         stack offset and begin/end scope address of a local variable.
27479         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
27480         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
27481         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
27482
27483         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
27484         Added new relocation types for start/end scope of a local variable.
27485
27486 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
27487
27488         * object.h: add mono_object_domain() macro.
27489         * reflection.c: handle typespecs.
27490         * icall.c: MonoMethod::get_Name() implementation.
27491
27492 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27493
27494         * icall.c: String::GetHashCode() icall implementation.
27495
27496 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27497
27498         * icall.c: String::IndexOfAny icall.
27499         * object.c, object.h: make array->max_length more useful.
27500         Intrduced mono_object_class() and mono_string_length() macros.
27501
27502 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27503
27504         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
27505         instead of g_unichar_isdigit.
27506
27507 2002-04-11  Nick Drochak  <ndrochak@gol.com>
27508
27509         * icall.c: Implement a simple Double.ToString().
27510
27511 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
27512
27513         * appdomain.h: only io-layer.h is supposed to be included.
27514         * icall.c: explicitly import environ. Fix warning.
27515
27516 2002-04-10  Nick Drochak  <ndrochak@gol.com>
27517
27518         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
27519                 return true even if it's not Daylight Savings time.
27520                 Only return false for the case where the function isn't
27521                 implemented for a plaform (read Windows).
27522
27523 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27524
27525         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
27526         data with a mutex.
27527
27528 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
27529
27530         * mempool.c (mono_mempool_alloc): only use g_malloc when
27531         absolutely necessary.
27532
27533 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
27534
27535         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
27536
27537         * class.c (mono_class_vtable): use domain mempool to allocate vtable
27538         (mono_class_proxy_vtable): use domain mempool
27539
27540 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
27541
27542         * appdomain.h, appdomain.c: split initialization that requires the
27543         execution engine support into mono_runtime_init().
27544
27545 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
27546
27547         * class.c (mono_class_init): don't include vtable inside MonoClass
27548         to save some memory, gather some statistics.
27549         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
27550
27551 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
27552
27553         * icall.c: internalcall implementation for ValueType.Equals().
27554
27555 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
27556
27557         * object.c (mono_message_init): moved 
27558         (mono_runtime_exec_main): new arch. independent impl.
27559         (mono_runtime_invoke_array): new method - like
27560         mono_runtime_invoke, but you can pass an array of objects.
27561         (mono_remoting_invoke): new arch. independent impl.
27562         (mono_message_invoke): new arch. independent impl.
27563         (mono_runtime_class_init): new arch. independent impl.
27564         (mono_runtime_object_init): new arch. independent impl.
27565
27566 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27567
27568         * metadata.c, object.c, reflection.c: documented the exported
27569         functions.
27570
27571 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
27572
27573         * icall.c: simpler code to pass the assembly builder data to corlib.
27574         Implement GetNestedTypes() internalcall.
27575
27576 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
27577
27578         * class.c: warn if a type can't be loaded.
27579
27580 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
27581
27582         * image.h: typedef MonoImageOpenStatus
27583         * types.h: removed unused file
27584         
27585 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
27586
27587         * icall.c: Enum_ToObject accepts enum value arguments.
27588
27589 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
27590
27591         * class.c: move initialization of properties, events and nested
27592         classes, so that they happen for interfaces, too.
27593
27594 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
27595
27596         * icall.c: cleanup some ugly casts in Array_SetValue*.
27597
27598 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
27599
27600         * icall.c: the values array fro enums is of the correct type, now.
27601         Implement (correctly) getFullName instead of assQualifiedName for
27602         MonoType.
27603         * reflection.h, reflection.c: added mono_type_get_name ().
27604
27605 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
27606
27607         * assembly.c, image.h: for each MonoImage, record from wich assembly
27608         it was loaded.
27609         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
27610         Make Type.Assembly work.
27611
27612 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
27613
27614         * debug-symfile.h: use char* instead of gpointer to avoid
27615         unnecessary casts.
27616
27617         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
27618
27619         * icall.c (ves_icall_InternalExecute): impl. FielSetter
27620         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
27621
27622 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
27623
27624         * icall.c (mono_message_init): impl. (code cleanup)
27625         (ves_icall_InternalExecute): impl. FieldGetter
27626
27627         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
27628         defined we call all (non-static)methods through the vtable. 
27629
27630 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
27631
27632         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
27633         finalizer even though the memory is still referenced (and the chunk of
27634         memory is not freed).
27635
27636 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
27637
27638         * assembly.c: fix brokeness.
27639
27640 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
27641
27642         * class.c: kill some warnings. Check explicit interface method
27643         implementation also without considering the namespace.
27644         Load also literal strings in static class data.
27645
27646 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
27647
27648         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
27649         (default_assembly_name_resolver): Make the resolver take the
27650         "base" directory where the assembly was originally defined, so we
27651         can load DLLs that are in the same directory as the assembly that
27652         is being referenced.
27653
27654 2002-03-28  Dick Porter  <dick@ximian.com>
27655
27656         * file-io.h: 
27657         * file-io.c:
27658         * socket-io.c: 
27659         * unicode.h: 
27660         * unicode.c: Warning cleanups
27661
27662 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
27663
27664         * object.h, reflection.h: use the correct type instead of MonoObject.
27665
27666 2002-03-28  Martin Baulig  <martin@gnome.org>
27667
27668         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
27669         (mono_debug_update_symbol_file): Initialize classes if necessary.
27670
27671 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
27672
27673         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
27674         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
27675
27676 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
27677
27678         * assembly.h: fix function prototype.
27679         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
27680         * mono-endian.h: use const cast.
27681
27682 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
27683
27684         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
27685
27686 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
27687
27688         * loader.c: don't assert when a typeref can't be loaded, give
27689         a chance to the runtime to trow an exception instead.
27690         * loader.h: fix warning.
27691
27692 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
27693
27694         * class.c (mono_class_proxy_vtable): added proxy support
27695
27696 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
27697
27698         * icall.c: removed last of PAL calls, added System.Environment
27699         * file-io.h, file-io.c: MonoIO implementation
27700         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
27701
27702 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
27703
27704         * appdomain.c: do not use the byte marker in ldstr table lookup.
27705         * debug-helpers.c: allow two ':' to separate class and method name.
27706         * object.c: allocate arrays bounds with the GC, too.
27707         * verify: add a few more checks.
27708
27709 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
27710
27711         * reflection.c: output also literal strings. Allocate parameter data
27712         with GC_malloc() (thanks, Martin, for catching this!).
27713
27714 2002-03-26  Martin Baulig  <martin@gnome.org>
27715
27716         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
27717         include the `this' offset in the `param_offsets'.
27718
27719 2002-03-25  Martin Baulig  <martin@gnome.org>
27720
27721         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
27722         mono_debug_get_class() function to get the classes. Added new
27723         relocation types for arrays and strings.
27724         (mono_debug_get_class): New static function to search in all
27725         referenced assemblies for a metadata token.
27726
27727         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
27728
27729 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27730
27731         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
27732         hold gc-allocated objects. Make the string heap a stream like the
27733         others. Removed duplicated code when writing stream info.
27734         Added asserts to catch possible buffer overflows. Set the sorted map
27735         for tables that need sorting. Added some documentation.
27736
27737 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
27738
27739         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
27740         for interned strings and vtables.
27741
27742 2002-03-24  Martin Baulig  <martin@gnome.org>
27743
27744         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
27745         it in the array since it was created with g_slist_prepend().
27746
27747 2002-03-24  Martin Baulig  <martin@gnome.org>
27748
27749         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
27750         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
27751         (mono_debug_method_from_token): Renamed to
27752         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
27753         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
27754
27755         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
27756         relocation types.
27757
27758         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
27759
27760 2002-03-24  Martin Baulig  <martin@gnome.org>
27761
27762         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
27763         (mono_debug_method_from_token): New func.
27764
27765         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
27766         New interncall, calls mono_debug_local_type_from_signature().
27767         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
27768         calls mono_debug_method_from_token().
27769
27770 2002-03-23  Martin Baulig  <martin@gnome.org>
27771
27772         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
27773         specifies the number of bytes to be converted, not the array size.
27774         Return the number of chars, not the number of bytes.
27775         (ves_icall_iconv_get_chars): The `byteCount' argument
27776         specifies the number of bytes to be converted, not the array size.
27777
27778 2002-03-23  Martin Baulig  <martin@gnome.org>
27779
27780         * reflection.h (MonoReflectionSigHelper): New type.
27781
27782         * reflection.c (mono_reflection_sighelper_get_signature_local),
27783         (mono_reflection_sighelper_get_signature_local): New functions.
27784
27785         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
27786         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
27787         interncalls.
27788
27789 2002-03-23  Martin Baulig  <martin@gnome.org>
27790
27791         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
27792         is_writeable is set.
27793         (mono_raw_buffer_update): New function to write the modified map
27794         back to disk.
27795
27796         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
27797
27798         * debug-symfile.c (mono_debug_update_symbol_file): Call
27799         mono_raw_buffer_update() when done writing.
27800
27801 2002-03-23  Martin Baulig  <martin@gnome.org>
27802
27803         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
27804
27805         * debug-symfile.c: Added support for arguments and local variables.
27806
27807 2002-03-23  Dick Porter  <dick@ximian.com>
27808
27809         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
27810         protected by ifdefs, hence breaking the w32 build.
27811
27812 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27813
27814         * object.c: implement is_interned() the right way.
27815
27816 2002-03-21  Martin Baulig  <martin@gnome.org>
27817
27818         * debug-symfile.[ch]: New files to handle debugging information
27819         files. There's also support to dynamically update these symbol
27820         files to include machine dependent information.
27821
27822 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
27823
27824         * threads.c (mono_thread_create): new function to create thread
27825         from C
27826
27827 2002-03-20  Martin Baulig  <martin@gnome.org>
27828
27829         * icall.c (ves_icall_InternalInvoke): Create a new object if the
27830         method is a constructor.
27831         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
27832         points to ves_icall_InternalInvoke().
27833
27834 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
27835
27836         * file-io.c: Flush shouldn't throw exceptions.
27837
27838 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
27839
27840         * file-io.c: FileStream flush support; FileSetLength now
27841         restores file pointer.
27842
27843 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
27844
27845         * class.c: set image for pointer classes.
27846
27847 2002/03/19  Nick Drochak <ndrochak@gol.com>
27848
27849         * sysmath.c: Forgot one.
27850
27851 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
27852
27853         * sysmath.c: Avoid redefining existing names.
27854
27855 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
27856
27857         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
27858         handled by runtime as icall rather than dllimport from libm.so
27859         * file-io.c, file-io.h: fixed handle argument type.
27860
27861 2002-03-18  Dick Porter  <dick@ximian.com>
27862
27863         * reflection.c (mono_image_get_type_info): rename interface to
27864         iface, because of "#define interface struct" on windows.
27865
27866 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
27867
27868         * class.c, class.h: rename and export mono_ptr_class_get().
27869         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
27870         * reflection.c, reflection.h, icall.c: better/saner type name
27871         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
27872         method signatures.
27873
27874 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
27875
27876         * class.c (mono_class_init): removed hardcoded GHC_SLOT
27877
27878         * icall.c (ves_icall_InternalInvoke): impl.
27879
27880 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27881
27882         * reflection.c: output the interface map table, too.
27883
27884 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
27885
27886         * class.c (class_compute_field_layout): separate computation of 
27887         static field layout
27888
27889 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
27890
27891         * icall.c: added System.Buffer support.
27892         * file-io.c: moved file icalls from PAL to FileStream.
27893
27894 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
27895
27896         * icall.c (ves_icall_System_Object_GetHashCode): impl.
27897
27898 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
27899
27900         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
27901
27902 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27903
27904         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
27905
27906 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
27907
27908         * debug-helpers.{c,h}: moved here from monograph some useful functions
27909         to locate a method by name/signature in a class or image. Included
27910         also a small and flexible IL disassembler.
27911
27912 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
27913
27914         * reflection.c: fixup tokens in methods with small header size, too.
27915
27916 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
27917
27918         * object.c (mono_string_to_utf8): remove assert(!error), instead
27919         print a warning. 
27920
27921 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
27922
27923         * icall.c: update to the new mono_Array_class_get interface.
27924
27925 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
27926
27927         * appdomain.c, object.c: Boehm-GC enable.
27928         * icall.c: make get_data_chunk() support split data requests.
27929         Ensure a class is initialized in more cases. Return only the first
27930         property found in GetProperties() or the compiler gets confused. 
27931         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
27932         * reflection.h, reflection.c: add fixup mechanism for field and method
27933         tokens. Initialize assembly->typeref in a single place. Output
27934         properties after events. Support custom attributes for events, too.
27935         Typo fix for paramter custom attrs.
27936
27937 2002-03-07  Martin Baulig  <martin@gnome.org>
27938
27939         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
27940
27941 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
27942
27943         * class.c (mono_array_class_get): fix. for multi. dim. arrays
27944
27945 2002-03-06  Martin Baulig  <martin@gnome.org>
27946
27947         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
27948         non-zero lower bounds. See testcases #F10-#F13.
27949
27950 2002-03-05  Martin Baulig  <martin@gnome.org>
27951
27952         * exception.c (mono_get_exception_argument_out_of_range): New exception.
27953
27954         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
27955         ves_icall_System_Array_GetValue(), only calculate the absolute array position
27956         here.
27957         (ves_icall_System_Array_SetValue): Likewise.
27958         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
27959         as argument and does the actual work. This function is used when copying a
27960         multi-dimensional array.
27961         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
27962         now do all the widening conversions of value types.
27963         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
27964
27965 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27966
27967         * class.c: remove some magic numbers and use the smbolic names,
27968         instead. Added init_events() to load event info at class init time.
27969         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
27970         and mono_metadata_methods_from_event().
27971         * reflection.h, reflection.c: added support for writing out the evnets
27972         related information.
27973
27974 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
27975
27976         * reflection.h, icall.c: use a different method (GetInterfaces)
27977         to gather interface info and add isbyref, isprimitive and
27978         ispointer to the ves_icall_get_type_info() return value.
27979
27980 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
27981
27982         * class.h: stared adding support for events.
27983         * icall.c: split find_members implementation. Added debug icall to get
27984         the address of an object.
27985         * reflection.c: handle TypeBuilders in mono_type_get_object().
27986
27987 2002-03-01  Martin Baulig  <martin@gnome.org>
27988
27989         * icall.c (ves_icall_System_Array_GetLength): This must throw an
27990         ArgumentOutOfRangeException(), not an ArgumentException().
27991         (ves_icall_System_Array_GetLowerBound): Likewise.
27992         (ves_icall_System_Array_GetValue): Improved argument checking.
27993         (ves_icall_System_Array_SetValue): Improved argument checking.
27994
27995 2002-03-01  Martin Baulig  <martin@gnome.org>
27996
27997         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
27998         called with invalid arguments rather than just dying with g_assert().
27999         (ves_icall_System_Array_SetValue): Likewise.
28000         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
28001         raise a NotImplementedException instead.
28002         (ves_icall_System_Array_GetLength): Added argument checking.
28003         (ves_icall_System_Array_GetLowerBound): Added argument checking.
28004
28005 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
28006
28007         * object.h (mono_assert): new macros mono_assert and
28008         mono_assert_not_reached
28009
28010 2002-02-28  Martin Baulig  <martin@gnome.org>
28011
28012         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
28013         and "System::String::IsInterned" to "System::String::_IsInterned".
28014
28015 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
28016
28017         * icall.c: remove hacks for typebuilder. Added icall to create a
28018         modified type from a tybebuilder.
28019         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
28020         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
28021         to create a backing MonoClass for a TypeBuilder.
28022
28023 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28024
28025         * class.c, class.h: more refactoring of class init.
28026         Export mono_class_setup_mono_type() and mono_class_setup_parent().
28027
28028 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
28029
28030         * marshal.c, marshal.h: start of marshaling interface.
28031
28032 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
28033
28034         * icall.c: fix order in assembly qualified name icall.
28035
28036 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
28037
28038         * class.c: do not free str, since we store it in the hash table.
28039         * reflection.h: add label field to MonoILExceptionInfo.
28040         * reflection.c: handle references to more than one assembly. Handle
28041         case when there isn't a module created in the assembly.
28042
28043 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
28044
28045         * class.c: Fix typo. Start refactoring of class init code.
28046
28047 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
28048
28049         * appdomain.c: exit with 1 on error.
28050         * class.c: we already have the name in MonoClassField.
28051         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
28052         MonoStreamHeader instead of an offset of image->raw_metadata.
28053
28054 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
28055
28056         * appdomain.c (mono_init): Be even more descriptive about the error.
28057
28058 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
28059
28060         * appdomain.c: give the user an informative message when corlib can't
28061         be loaded.
28062
28063 2002-02-26  Martin Baulig  <martin@gnome.org>
28064
28065         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
28066         New icall to get the time zone data.
28067
28068 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28069
28070         * reflection.c: set virtual and raw size of section correctly.
28071         * threads.c: transfer domain information to newly created threads.
28072
28073 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
28074
28075         * class.c: when instancing a class in a domain, load the default
28076         vaules for static fields from the constant table. Fix System.Enum to
28077         not be an enum.
28078         * icall.c: implement Object::GetType() internalcall. Implemented
28079         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
28080         Fixed checking of binding flags in find_members().
28081         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
28082         * reflection.c: handle enumerations when writing to the constant
28083         table. Use a different object cache for types.
28084
28085
28086 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
28087
28088         * object.c (mono_object_isinst): fix for arrays
28089
28090         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
28091
28092 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
28093
28094         * object.c: don't use mprotect ()  and fix intern pool hash table
28095         lookup for big endian systems.
28096
28097 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
28098
28099         * icall.c: change type_is_subtype_of () signature.
28100
28101 2002-02-21  Mark Crichton  <crichton@gimp.org>
28102
28103         * rand.c, rand.h: Added random number generator for
28104         System.Security.Cryptography classes.
28105
28106         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
28107
28108         * icall.c: Added System.Security.Cryptography calls.
28109
28110 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28111
28112         * class.c, icall.c, metadata.c: better support for pointer types.
28113         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
28114         * reflection.c: Add support for getting custom attrs for properties
28115         and simplify some code.
28116
28117 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
28118
28119         * icall.c: change getToken () and add custom attribute GetBlob()helper
28120         method.
28121         * reflection.h: add custom attrs array to the reflection builder structures.
28122         * reflection.c: encode and emit custom attributes for all the relevant
28123         reflection objects. Cache fieldref and methodref tokens. Change
28124         mono_image_create_token() interface to take a MonoDynamicAssembly.
28125         More complete custom attributes decoder. Load custom attributes for
28126         Assembly, Field, Method and Constructor objects, too. Make the
28127         returned array an Attribute[] one, not object[]. Added
28128         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
28129         custom attribute constructor.
28130
28131 2002-02-20  Dick Porter  <dick@ximian.com>
28132
28133         * icall.c:
28134         * rawbuffer.c:
28135         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
28136         problem code out for now).
28137
28138 2002-02-19  Radek Doulik  <rodo@ximian.com>
28139
28140         * object.c (mono_ldstr): use hash table to avoid multiple swapping
28141
28142 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
28143
28144         * icall.c: register the GetCustomAttributes method.
28145         * object.c, object.h: add mono_string_new_len ().
28146         * reflection.h, reflection.c: added mono_runtime_invoke(),
28147         mono_install_runtime_invoke(). Added
28148         mono_reflection_get_custom_attrs () to load custom attributes and
28149         create the attribute objects.
28150
28151 2002-02-19  Dick Porter  <dick@ximian.com>
28152         * threads-dummy-types.c:
28153         * threads-dummy-types.h:
28154         * threads-dummy.c:
28155         * threads-dummy.h:
28156         * threads-pthread-types.c:
28157         * threads-pthread-types.h:
28158         * threads-pthread.c:
28159         * threads-pthread.h:  Deleted obsolete files
28160
28161 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
28162
28163         * class.c (mono_class_vtable): runtime init the class when we
28164         allocate static class data.
28165
28166         * icall.c (ves_icall_System_Array_SetValue): check for null values.
28167
28168         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
28169         and String - but we will need generic marshalling support in the
28170         future. 
28171         (mono_init): set the domain name in a ms compatible way
28172
28173         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
28174         String[].
28175
28176 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
28177
28178         * object.c (mono_array_clone): use alloca() instead of g_malloc  
28179         for sizes
28180
28181         * appdomain.c (mono_domain_unload): impl.
28182
28183 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
28184
28185         * appdomain.c, object.c: fix intern pool implementation.
28186         * class.c: fix alignment code.
28187
28188 2002-02-16  Radek Doulik  <rodo@ximian.com>
28189
28190         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
28191         and s2 > s1, just copy lower bytes to be compatible with little
28192         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
28193         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
28194
28195         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
28196         force big_endian to be 1 for big endian machines 
28197         (ves_icall_iconv_new_decoder): ditto
28198
28199 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
28200
28201         * socket-io.c (convert_sockopt_level_and_name): If the system
28202         doesn't define SOL_IP or SOL_TCP, get them by hand using
28203         getprotobyname() and caching the values (because this could be a
28204         slow operation).
28205         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
28206         Use the appropriate struct when the system does support it. Ie,
28207         not all systems have struct ip_mreqn so use struct ip_mreq when
28208         appropriate.
28209
28210 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
28211
28212         * reflection.c: handle finally clauses.
28213
28214 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
28215
28216         * socket-io.c: use g_snprintf() instead of snprintf.
28217
28218 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
28219
28220         * reflection.c (mono_param_get_objects): Cast second argument to
28221         mono_method_get_param_names to a const char** to silence the
28222         compiler warning.
28223
28224         * appdomain.c (mono_domain_assembly_open): Put parens around the
28225         truth statement in the for-loop.
28226
28227         * unicode.c (iconv_convert): Got rid of a compiler warning about
28228         int i being unused when the system has a new iconv.
28229         (iconv_get_length): Same.
28230
28231         * image.c (load_class_names): Cast the second argument to
28232         g_hash_table_insert() to char* to hush compiler warnings about the
28233         arg being a const.
28234         (mono_image_open): Same here.
28235
28236         * socket-io.c: Don't conditionally include sys/filio.h or
28237         sys/sockio.h here anymore since we now get them from
28238         io-layer/io-layer.h
28239         (inet_pton): If the system doesn't support inet_aton, implement
28240         using inet_addr and also #define INADDR_NONE if it isn't defined
28241         by the system.
28242
28243 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
28244
28245         * metadata.c, metadata.h: added function to get packing and size info
28246         of a typedef.
28247         * reflection.h, reflection.c: handle field RVA data. Save info about
28248         the table layout if needed. Assign typedef indexes to all the types
28249         before dumping the info about them to avoid forward reference problems.
28250
28251 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
28252
28253         * socket-io.c (convert_sockopt_level_and_name): ifdef
28254         SO_ACCEPTCONN because it is not defined on my system (old debian)
28255
28256 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
28257
28258         * opcode.c: use stddef.h to get NULL.
28259
28260 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
28261
28262         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
28263         for FIONBIO, FIONREAD and SIOCATMARK.
28264         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
28265         define INADDR_NONE and besides, inet_addr() is deprecated and
28266         should not be used. Use inet_pton() instead - it also has the
28267         added bonus that it can easily handle IPv6 addresses as well.
28268         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
28269
28270 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
28271
28272         * decimal.c: remove _MSC_VER conditional.
28273
28274 2002-02-13  Dick Porter  <dick@ximian.com>
28275
28276         * socket-io.c: 
28277         * icall.c: Internal calls for Blocking, Select, Shutdown,
28278         GetSocketOption and SetSocketOption
28279
28280 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28281
28282         * assembly.cs: better resolver: use it instead of some kludgy
28283         code.
28284
28285 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
28286
28287         * reflection.c: the best way to speed-up the compiler is to avoid
28288         infinite loops.
28289
28290 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
28291
28292         * class.c (mono_class_vtable): changed the object layout
28293         (obj->vtable->class). 
28294         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
28295
28296 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28297
28298         * assembly.c: look for assemblies in the assembly dir, too.
28299
28300 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
28301
28302         * class.c: fix thinko in mono_class_from_type().
28303
28304 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28305
28306         * exception.h, exception.c: added TypeLoadException.
28307         * object.h, object.c: added mono_array_clone ().
28308         * icall.c: handle throwOnError in AssemblyGetType().
28309         Added Array.Clone().
28310         * opcode.h, opcode.c: use a single value for the opcode val.
28311         Compile fix for non-gcc compilers.
28312
28313 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
28314
28315         * opcodes.c, opcodes.h: export interesting info about opcodes.
28316
28317 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
28318
28319         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
28320         icalls. 
28321
28322         * class.c (class_compute_field_layout): set element_class for enums
28323         (mono_class_create_from_typedef): set element_class for normal classes
28324
28325         * icall.c (ves_icall_System_Enum_get_value): impl.
28326
28327         * class.c (mono_class_create_from_typedef): do not set valuetype
28328         flag for System.ValueType and System.Enum
28329
28330 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
28331
28332         * unicode.c (iconv_convert): fix big endian problem.
28333
28334 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
28335
28336         * class.c: add asserts if we are ever going to scribble over memory.
28337         * socket-io.c: not all systems have AF_IRDA defined.
28338
28339 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
28340
28341         * class.c (class_compute_field_layout): do not consider static
28342         fields to compute alignment
28343
28344 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
28345
28346         * appdomain.c (mono_appdomain_get): impl.
28347         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
28348
28349 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
28350
28351         * icall.c: ignore "file://" prefix when loading an assembly.
28352
28353 2002-01-23  Dick Porter  <dick@ximian.com>
28354
28355         * socket-io.c:
28356         * icall.c:
28357         * Makefile.am: Added socket support
28358
28359 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
28360
28361         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
28362         code back.  This should return the assemblies that are loaded by
28363         the runtime on behalf of an application domain. 
28364
28365         The current implementation is still broken, it just returns every
28366         assembly loaded, but until we get real applications domain this
28367         will do.
28368
28369 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
28370
28371         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
28372         AppDomain object.
28373
28374 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
28375
28376         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
28377         the mono_class_from_name lookup.
28378         (ves_icall_get_parameter_info): ditto.
28379         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
28380         method.
28381         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
28382
28383 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
28384
28385         * class.c: load also nested classes on class init.
28386         System.ValueType instance methods gets passed boxed
28387         values, unless methods in derived classed that get a pointer to the
28388         data.
28389         * icall.c: use better name parsing code in GetType().
28390         * image.c, image.h: add mono_image_loaded ().
28391         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
28392         * reflection.c, reflection.h: added mono_reflection_parse_type().
28393
28394 2002-01-22  Veronica De Santis <veron78@interfree.it>
28395
28396         * icall.c : Added mapping of internal calls for Manual and Auto reset events
28397         * threads.c : Added the implementation of internal calls for events
28398         * threads.h : Added prototypes of internal calls for events
28399         
28400 2002-01-21  Radek Doulik  <rodo@ximian.com>
28401
28402         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
28403
28404 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
28405
28406         * class.c (mono_class_init): set min_align to 1 (instead of 0)
28407         (mono_class_value_size): use min_align
28408
28409 2002-01-20  Dick Porter  <dick@ximian.com>
28410
28411         * threads.h:
28412         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
28413         so it compiles on w32.
28414
28415 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
28416
28417         * metadata.c (mono_type_stack_size): impl.
28418
28419         * class.c (mono_class_get_field): impl. memberref token
28420
28421 2002-01-16 Veronica De Santis <veron78@@interfree.it>
28422
28423         * icall.h : Added the internal calls mapping for CreateMutex_internal
28424                     and ReleaseMutex_internal.
28425         * threads.h : Added the prototype of mutexes internal calls.
28426         * threads.c : Added the implementations of mutexes internal calls.
28427
28428 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
28429
28430         * metaparse.h: removed unused file.
28431         * reflection.c, reflection.h: added stream_data_align () function 
28432         to align data in streams and keep stream aligned. Add support for
28433         exception support in method headers.
28434
28435 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
28436
28437         * unicode.c: make iconv_convert () return the number of bytess written
28438         in the output buffer.
28439
28440 2002-01-15  Dick Porter  <dick@ximian.com>
28441         * threads.c: Make the runtime's idea of infinite timeouts coincide
28442         with the class library's
28443
28444         Fix a particularly egregious bug in mono_thread_cleanup(). That
28445         code was so utterly bogus it must have been written on a Monday.
28446
28447 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
28448
28449         * reflection.h: add subtypes field to TypeBuilder.
28450         * reflection.c: encode constants for literal fields.
28451         Handle subtypes. Fix user string token (and add a zero byte)
28452         at the end.
28453         
28454 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
28455
28456         * class.c (mono_class_init): bug fix: assign slot numbers for
28457         abstract methods.
28458
28459 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
28460
28461         * reflection.c: don't try to output a code RVA for abstract methods.
28462         Small fixes for method header format. Output parameter info to the
28463         ParamDef table. Save method overriding info to MethodImpl table.
28464         Fix property support. Allow typedef.extends to be a type in the
28465         building assembly.
28466         * verify.c: fix off-by-one error.
28467
28468 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
28469
28470         * class.c: fix mono_class_from_mono_type () for szarray types.
28471         Remove unused cache check in mono_class_from_type_spec().
28472         * icall.c: *type_from_name () functions handle simple arrays and byref.
28473         * reflection.c: handle byref and szarray types. Handle methods without
28474         body (gets P/Invoke compilation working). Handle types and fields in
28475         get_token ().
28476         * reflection.h: add rank to MonoTypeInfo.
28477
28478 2002-01-10  Dick Porter  <dick@ximian.com>
28479
28480         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
28481         internal calls
28482
28483 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
28484
28485         * icall.c: initialize class in type_from_handle ().
28486         Loop also in parent classes for get_method ().
28487         * reflection.c: properly encode class and valuetype types.
28488         Start on encoding TypeBuilder types. Handle fieldrefs.
28489         Use correct length when registering a user string.
28490         Handle ConstructorBuilder and MonoMethod in get_token ().
28491         Make mono_type_get_object () aware of cached types.
28492         * object.c: back out change to mono_string_new ().
28493
28494 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
28495         * object.c: mono_string_new should return a NULL when the string 
28496         passed in is NULL -- not try to deference it.
28497         
28498 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
28499
28500         * icall.c: hack to make IsSubType work for TypeBuilders.
28501         * reflection.c: emit constructors before methods.
28502         Retrieve param names in mono_param_get_objects().
28503
28504 2002/01/05  Nick Drochak  <ndrochak@gol.com>
28505
28506         * Makefile.am: fix list of headers and sources so automake 1.5
28507         doesn't complain. Removed \# at end of list.
28508
28509 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
28510
28511         * reflection.c: get token for a method ref. Set return type of
28512         constructor to void.
28513         * loader.c: debug message.
28514         * class.c: typo fix.
28515
28516 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
28517
28518         * icall.c: fix array init with rank > 1. FindMembers
28519         loops in parent class as well.
28520         * image.c: do not insert nested types in name cache.
28521         * reflection.c: warning fix.
28522         * reflection.h: add override method (for interface impl).
28523
28524 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
28525
28526         * metadata.c: fix customattr decoding.
28527
28528 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
28529
28530         * rawbuffer.cs: Added native Win32 implementation, avoids using
28531         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
28532
28533 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
28534
28535         * class.c: make the low-level routines handle the cache.
28536
28537 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
28538
28539         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
28540
28541 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
28542
28543         * class.c: fix mono_array_element_size() for objects.
28544         * class.h, class.c: add properties to MonoClass and load them
28545         at init time.
28546         * icall.c: check with isinst() when assigning a value to an array
28547         instead of requiring the classes to match exactly.
28548         Implemented icall for System.Type::GetType().
28549         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
28550         enums. Handle bindingflags when looking for methods and fields.
28551         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
28552         and mono_metadata_methods_from_property().
28553         * reflection.h, reflection.c: added structures for propreties,
28554         parameters and enums. Implemented mono_property_get_object() and
28555         mono_param_get_objects().
28556
28557 2001-12-18  Dick Porter  <dick@ximian.com>
28558
28559         * file-io.c: Use mono_string_to_utf16() instead of
28560         mono_string_chars()
28561
28562         * object.c: Added mono_string_to_utf16(), which copies the non
28563         NULL-terminated MonoString into a new double-null-terminated
28564         buffer.
28565
28566 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
28567
28568         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
28569
28570 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
28571
28572         * file-io.c: raise exceptions if handle is invalid.
28573
28574 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
28575
28576         * assembly.c: yet another check for mscorlib.
28577         * class.c, class.h: load nesting info for classes.
28578         * icall.c: many new functions to support the Reflection classes.
28579         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
28580         * reflection.h, reflection.c: mono_image_create_token(),
28581         mono_assembly_get_object(), mono_type_get_object(),
28582         mono_method_get_object(), mono_field_get_object(): methods to return
28583         objects that parallel the C representation of assemblies, types,
28584         methods, fields.
28585
28586 2001-12-11  Dick Porter  <dick@ximian.com>
28587
28588         * icall.c:
28589         * file-io.c: Internal calls for file IO.
28590
28591 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
28592
28593         * tabledefs.h: missing FileAttributes.
28594         * verify.h, verify.c: use is_valid_string () to simplify and check for
28595         valid strings more correctly. Fix warnings and speeling.
28596         Check more tables: Filed, File, ModuleRef, StandAloneSig.
28597         Check code: branches, maxstack, method calls.
28598
28599 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
28600
28601         * object.c (mono_object_allocate): removed static, so that the jit
28602         can allocate value types.
28603
28604         * icall.c (ves_icall_System_DateTime_GetNow): impl.
28605
28606 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
28607
28608         * class.c: init enum types right away and register the
28609         token->MonoClass map in mono_class_create_from_typedef ().
28610         * verify.h, verify.c: first cut of the verifier.
28611         * pedump.c: add --verify switch to verify metadata tables.
28612         * tabledefs.h: add some missing enums.
28613
28614 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
28615
28616         * class.c (mono_install_runtime_class_init): impl.
28617         (mono_class_init): renamed mono_class_metadata_init to
28618         mono_class_init, also removed the metadata_inited flag
28619
28620         * object.c (mono_object_isinst): use faster algorithm
28621
28622 2001-11-30  Radek Doulik  <rodo@ximian.com>
28623
28624         * mono-endian.h: reverted last change
28625         added function prototypes
28626
28627         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
28628         add mono-endian.c back
28629
28630         * mono-endian.c: returned back, as Paolo pointed out, it's needed
28631         for unaligned access, I've mistaked it with endianess. I am
28632         sorry.
28633         (mono_read16): fix reverted endianess
28634         (mono_read64): ditto
28635         (mono_read32): ditto
28636
28637 2001-11-30  Dick Porter  <dick@ximian.com>
28638
28639         * exception.c: Implement mono_exception_from_name()
28640
28641 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
28642
28643         * metadata.h, metadata.c: remove params_size and locals_size and their
28644         calculation from the metadata code: they are only usefult to the
28645         interp.
28646
28647 2001-11-29  Radek Doulik  <rodo@ximian.com>
28648
28649         * object.c (mono_ldstr): swap bytes here, it's probably not the
28650         best place, but works for me now, I'll redo it once I know mono
28651         better, also note that I add PROT_WRITE and don't reset back, also
28652         note that it's only affects big endians, so x86 should be OK
28653
28654         * mono-endian.h (read16): use just glib macros for both endians
28655
28656         * mono-endian.c: removed as glib macros are used in in
28657         mono-endian.h so we don't need to care about endianess for read
28658         macros as glib does that for us already
28659
28660 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
28661
28662         * class.h, class.h: take minimum alignment into consideration so
28663         that the fields of a class remain aligned also when in an array.
28664
28665 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
28666
28667         * loader.h, loader.c: add mono_method_get_param_names().
28668         * class.c: 0-init class fields.
28669
28670 2001-11-26  Dick Porter  <dick@ximian.com>
28671
28672         * icall.c:
28673         * threads-types.h:
28674         * threads.c: New file that handles System.Threading on all platforms
28675
28676         * object.c: 
28677         * object.h: Remove the synchronisation struct from MonoObject,
28678         replace it with a pointer that gets initialised on demand
28679
28680         * Makefile.am: Replace all the system-specific threading code with
28681         a single file that uses the new wrapper library
28682
28683 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
28684
28685         * class.c, class.h: add mono_install_trampoline() so that the runtime
28686         can register a function to create a trampoline: removes the ugly
28687         requirement that a runtime needed to export arch_create_jit_trampoline.
28688         * object.h, object.c: added mono_install_handler() so that the runtime
28689         can install an handler for exceptions generated in C code (with
28690         mono_raise_exception()). Added C struct for System.Delegate.
28691         * pedump.c: removed arch_create_jit_trampoline.
28692         * reflection.c: some cleanups to allow registering user strings and
28693         later getting a token for methodrefs and fieldrefs before the assembly
28694         is built.
28695         * row-indexes.h: updates and fixes from the new ECMA specs.
28696
28697 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
28698
28699         * class.h, class.c: add enum_basetype field to MonoClass.
28700         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
28701         to get index in the constant table reated to a field, param or
28702         property.
28703         * reflection.h, reflection.c: handle constructors. Set public-key and
28704         version number of the built assembly to 0.
28705         * row-indexes.h: update from new ECMA spec.
28706
28707 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
28708
28709         * class.h, class.c: add a max_interface_id to MonoClass.
28710         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
28711         since it's used to do that. Added mono_type_type_from_obj().
28712         Make GetType() return NULL instead of segfaulting if the type was not
28713         found. Handle simple arrays in assQualifiedName.
28714         * object.h: add a struct to represent an Exception.
28715         * reflection.c: output call convention in method signature.
28716         Add code to support P/Invoke methods and fixed offsets for fields.
28717
28718 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
28719
28720         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
28721         the value.
28722         * icall.c: use mono_array_addr instead of array->vector: fixes the
28723         reflection image writing.
28724         * reflection.c: init call convention byte to 0 in method signature.
28725         Encode the property signature. Don't output property-related methods
28726         twice. Really process the properties for a type (don't cast a field to
28727         a property, my mom always told me that).
28728         Fix 64 bit issues in pointer alignment in a different and more
28729         readable way.
28730
28731 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
28732
28733         * loader.h: Removed type class from MonoDefaults, added monotype
28734
28735         * loader.c: Loaded MonoType, removed loading of Type
28736
28737         * icall.c (my_mono_new_object): Now returns a System.MonoType,
28738         and fills in System.Type._impl with a RuntimeTypeHandle rather
28739         than the actual MonoClass *
28740
28741         (ves_icall_type_from_handle): change from type_class to
28742         monotype_class
28743
28744         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
28745         implemented
28746
28747         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
28748         implemented
28749
28750         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
28751
28752         (ves_icall_System_Reflection_Assembly_GetType): implemented
28753
28754         (ves_icall_System_MonoType_assQualifiedName): implemented
28755
28756         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
28757
28758 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
28759
28760         * assembly.c (mono_assembly_open): Implement a cache for the
28761         assemblies. 
28762
28763         (mono_assembly_close): only destroy the assembly when the last
28764         reference is gone.
28765         
28766 2001-11-09  Dick Porter  <dick@ximian.com>
28767
28768         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
28769
28770 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
28771
28772         * class.c (mono_class_metadata_init): bug fix: compute the right slot
28773
28774 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
28775
28776         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
28777         from Martin Weindel.
28778         * object.h: add mono_string_chars ().
28779
28780 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
28781
28782         * reflection.c (build_compressed_metadata): Eliminates warnings
28783         and uses 64-bit clean code.
28784
28785         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
28786         (mono_type_equal): Change signature to eliminate warnings.
28787
28788 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
28789
28790         * icall.c, loader.c: remove the internalcall array constructors.
28791         Changes to match the new MonoArray structure.
28792         * object.h, object.c: an array object doesn't allocate an extra
28793         vector. Add mono_array_new_full () to create jagged arrays easily.
28794
28795 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
28796
28797         * metadata.h, metadata.c: add mono_metadata_field_info () to
28798         retreive all the info about a field from vairous tables.
28799         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
28800         * class.h, class.c: augment MonoClassField with more info.
28801         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
28802         policy and load a field's RVA if needed.
28803
28804 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
28805
28806         * class.c (mono_class_metadata_init): create a trampoline for all
28807         virtual functions instead of actually compiling them.
28808
28809 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
28810
28811         * class.h, class.c: include name in MonoClassField.
28812         * class.c: fix fundamental type of System.Object and System.String.
28813         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
28814         tokens in ldtoken.
28815         * icall.c: remove internalcalls for the Reflection stuff that is now
28816         done in C# code.
28817         * loader.c: mono_field_from_memberref () implementation.
28818         * mono-endian.c: thinko (s/struct/union/g).
28819         * object.c, object.h: make the mono_string_* prototypes actually use
28820         MonoString instead of MonoObject.
28821         * reflection.c, reflection.h: updates for changes in the reflection
28822         code in corlib: we use C structures that map to the actual C# classes.
28823         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
28824         fat method header if needed and use the info from the ILGenerator for
28825         methods. Handle fields in types. Misc fixes.
28826
28827 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
28828
28829         * class.c (mono_class_metadata_init): bug fix: always allocate
28830         space for static class data
28831
28832 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
28833
28834         * class.c (mono_compute_relative_numbering): use relative
28835         numbering to support fast runtime type checks.
28836
28837 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
28838
28839         * class.c (mono_class_create_from_typeref): added debugging output
28840         to print class name when MonoDummy is returned instead of real class
28841
28842 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
28843
28844         * class.c (mono_class_metadata_init): interface offset table now
28845         contains pointers into the vtable - this is more efficient for the jit
28846
28847 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
28848
28849         * class.c (mono_class_metadata_init): use a temporary vtable (the
28850         old algorithm only worked for the interpreter, but not for the jit)
28851
28852 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
28853
28854         * loader.c (method_from_memberref): use mono_class_get to get the
28855         class of an array instead of using System.Array directly.
28856         (mono_get_method): also add MEMBERREF methods to the method cache
28857         which usefull for arrays.
28858
28859 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
28860
28861         * pedump.c (arch_compile_method): added to compute vtable entry
28862
28863         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
28864         number of interfaces.
28865         
28866         * class.h: merged MonoArrayClass into MonoClass
28867
28868         * class.c (mono_class_create_from_typedef): compute the vtable size and
28869         allocate space to include the vtable inside MonoClass
28870         (mono_class_metadata_init): initialize the vtable
28871
28872 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
28873
28874         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
28875         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
28876         * image.c: endian fixes by Laurent Rioux.
28877         * object.h, object.c: rename MonoStringObject to MonoString and
28878         MonoArrayObject to MonoArray. Change some function names to conform to
28879         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
28880         guint16* as first argument, so don't use char*.
28881         Provide macros to do the interesting things on arrays in a portable way.
28882         * threads-pthread.c: updates for the API changes and #include <sched.h>
28883         (required for sched_yield()).
28884         * icall.c: updates for the API changes above.
28885         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
28886         platforms that need them.
28887
28888 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
28889
28890         * class.c: set the correct type for all the fundamental
28891         type when loading the class.
28892
28893 2001-10-05  Dick Porter  <dick@ximian.com>
28894
28895         * threads-pthread.c (pthread_mutex_timedlock): Simple
28896         compatibility version for C libraries that lack this call.
28897
28898 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
28899
28900         * class.c: MonoTypes stored in MonoClass are stored as
28901         fundamental MonoTypes when the class represents a
28902         fundamental type (System.Int32, ...).
28903         The TypeHandle return by ldtoken is a MonoType*.
28904         * icall.c: ves_icall_get_data_chunk () write out all the
28905         PE/COFF stuff. Implement ves_icall_define_method (),
28906         ves_icall_set_method_body (), ves_icall_type_from_handle ().
28907         * image.c: properly skip unknown streams.
28908         * loader.h, loader.c: add type_class to mono_defaults.
28909         * metadata.c, metadata.h: export compute_size () as
28910         mono_metadata_compute_size () with a better interface.
28911         Typo and C&P fixes.
28912         * pedump.c: don't try to print the entry point RVA if there is no entry point.
28913         * reflection.c, reflection.h: many cleanups, fixes, output method
28914         signatures and headers, typedef and typeref info, compress the metadata
28915         tables, output all the heap streams, cli header etc.
28916         * row-indexes.h: typo fixes.
28917
28918 2001-10-04  Dick Porter  <dick@ximian.com>
28919
28920         * object.h: Add a synchronisation mutex struct to MonoObject
28921
28922         * object.c (mono_new_object): Initialise the object
28923         synchronisation mutexes
28924
28925         * icall.c: System.Threading.Monitor internal calls
28926         
28927         * threads-pthread.h:
28928         * threads-pthread.c: System.Threading.Monitor internal calls
28929
28930         * threads-types.h: New file, includes the system-specific thread
28931         structures
28932         
28933         * threads-pthread-types.h:
28934         * threads-pthread-types.c: New files, handle pthread-specific
28935         synchronisation types
28936
28937         * threads-dummy-types.h: 
28938         * threads-dummy-types.c: New files of dummy support for
28939         thread-specific types
28940
28941         * metadata.c:
28942         * image.c:
28943         * pedump.c: include mono-endian.h not endian.h
28944         
28945         * Makefile.am: More threads files.
28946         Name mono-endian.h not endian.h
28947
28948 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
28949
28950         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
28951         stuff and implement a few more bits.
28952         * icall.c: a field needs to be dereferenced twice. Do not use the same
28953         name for two variables in the same scope.
28954         * image.c, image.h: cleanups.
28955
28956 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
28957
28958         * class.c (mono_class_metadata_init): bug fix: compute the right size
28959
28960 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
28961
28962         * icall.c: implemented some of the Reflection internalcalls.
28963         * image.c, image.h: start writing out the PE/COFF image.
28964         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
28965         that does the reverse than decode_blob_size ().
28966         * object.c: use mono_metadata_encode_value (). Move here
28967         temporary implementation of mono_string_to_utf8 ().
28968         * rawbuffer.c: make malloc_map static.
28969
28970 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
28971
28972         * metadata.c: fix type comparison for arrays.
28973         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
28974         Added a couple of new classes to monodefaults.
28975         * icall.c: added a couple of Reflection-related internalcalls.
28976         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
28977         Added a byval_arg MonoType to MonoClass.
28978
28979 2001-09-28  Dick Porter  <dick@ximian.com>
28980
28981         * icall.c:
28982         * threads-pthread.h: 
28983         * threads-pthread.c: Implemented internal calls for
28984         LocalDataStoreSlot operations.  Applied mutexes around all shared
28985         data.  Reworked the thread creation and Start() operations to
28986         avoid a race condition.
28987         
28988         * threads-dummy.h:
28989         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
28990
28991 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
28992
28993         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
28994
28995 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
28996
28997         * class.c, loader.c: warn and return NULL instead of erroring out.
28998         * icall.c: added System.AppDomain::getCurDomain().
28999         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
29000
29001 2001-09-25  Dick Porter  <dick@ximian.com>
29002
29003         * threads-pthread.h:
29004         * threads-pthread.c: Implemented timed thread joining and added
29005         System.Threading.Thread::Join_internal internal call
29006
29007         * icall.c: Added System.Threading.Thread::Join_internal internal call
29008
29009         * threads-dummy.h:
29010         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
29011
29012 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
29013
29014         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
29015         mono_string_intern () to implement the semantics of the ldstr opcode
29016         and the interning of System.Strings.
29017         * icall.c: provide hooks to make String::IsIntern and String::Intern
29018         internalcalls.
29019
29020 2001-09-23  Dick Porter  <dick@ximian.com>
29021
29022         * threads-dummy.c: 
29023         * threads-dummy.h: New files of dummy threading routines
29024
29025         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
29026         support code based on system specifics
29027
29028         Rename PTHREAD_LIBS to THREAD_LIBS
29029         
29030 2001-09-23  Dick Porter  <dick@ximian.com>
29031
29032         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
29033         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
29034         internal calls.
29035         (mono_thread_init): Set up a Thread object instance to return when
29036         the main thread calls Thread.CurrentThread
29037         (mono_thread_cleanup): Wait for all subthreads to exit
29038
29039         * icall.c: New internal calls for System.Threading.Thread::Sleep
29040         (including Schedule) and CurrentThread
29041
29042         * threads.h: New file, to insulate thread-specific stuff from the
29043         rest of the code
29044
29045 2001-09-21  Dick Porter  <dick@ximian.com>
29046
29047         * threads-pthread.h: 
29048         * threads-pthread.c: New file, for handling pthreads-style
29049         threading support.  Start() now starts a new thread and executes
29050         the ThreadStart delegate instance.
29051
29052         * icall.c: Added the internalcall for
29053         System.Threading.Thread::Start_internal
29054
29055         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
29056
29057 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
29058
29059         * loader.c: work around the different signatures for delegates
29060         constructors csc generates in compiled code vs the ones compiled in mscorlib.
29061
29062 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
29063
29064         * class.h, class.c: add mono_class_get_field_from_name ().
29065         * *: Fix C comments and other ANSI C issues.
29066
29067 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
29068
29069         * endian.h, assembly.c: fix some endianness issues.
29070
29071 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
29072
29073         * loader.h, load.c: add delegate_class to mono_defaults.
29074         Handle runtime provided methods in mono_get_method ().
29075
29076 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
29077
29078         * loader.c (mono_get_method): use pinvoke for internal call
29079
29080         * icall.c: use pinvoke for internal call
29081
29082         * loader.c (method_from_memberref): set the method name
29083
29084 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
29085
29086         * metadata.c: help the compiler generate better code for
29087         mono_class_from_mono_type ().
29088
29089 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
29090
29091         * class.c (mono_class_metadata_init): delayed computing of the
29092         class size to mono_class_metadata_init ()
29093
29094 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
29095
29096         * class.c, class.h: add an interfaces member to MonoClass.
29097         * image.c, image.h: add assembly_name field to MonoImage
29098         from the assembly table.
29099         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
29100
29101 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
29102
29103         * class.c: Handle Array in mono_class_from_mono_type ().
29104         * metadata.c, pedump.c: some endian fixes.
29105
29106 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
29107
29108         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
29109         * metadata.c: fix small problem introduced with the latest commit.
29110
29111 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
29112
29113         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
29114         We don't need a MonoMetadata pointer anymore to compare signatures in
29115         mono_metadata_signature_equal (), update callers.
29116         Reduced memory usage an number of allocations for MonoMethodHeader and
29117         MonoMethodSignature.
29118
29119 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
29120
29121         * metadata.c: added compare for szarray.
29122
29123 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
29124
29125         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
29126         and add a couple more types to it and mono_defaults. Give an hint on
29127         classes that need implementing in our corlib and are referenced
29128         in mscorlib.
29129
29130 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
29131
29132         * class.h, class.c: keep track if a class is also an Enum.
29133         * loader.c: Implement a couple more types for use in libffi
29134         marshalling. Gives better diagnostics when failing to dlopen
29135         a library. Set method->klass for P/Invoke methods, too.
29136
29137 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
29138
29139         * class.c, class.h: add a MonoType this_arg to MonoClass that
29140         represents a pointer to an object of the class' type that
29141         can be used by the interpreter and later the type cache.
29142         Add best guess alignment info for valuetype objects.
29143
29144 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
29145
29146         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
29147         into MonoType: one less level of indirection and allocation and
29148         simplifies quite a bit of code. Added cache for MonoTypes that are
29149         used frequently, so that we don't need to allocate them all the time.
29150
29151 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
29152
29153         * class.c (mono_class_create_from_typedef): System.Enum is also a
29154         value type, although it does not derive from System.ValueType
29155         (maybe a bug in the ms compiler?)
29156
29157         * metadata.c (mono_type_size): return the right size for value types
29158
29159         * loader.c (mono_get_method): only initialize method header if not abstract
29160
29161         * class.c (mono_class_from_mono_type): use mono_default values. 
29162
29163 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
29164
29165         * *: use MonoClass pointers instead of <type_tokens>
29166         
29167         * class.h: new flag: metadata_inited.
29168
29169         * class.c (mono_class_metadata_init): impl.
29170         (mono_class_instance_size): impl.
29171         (mono_class_data_size): impl.
29172
29173 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
29174
29175         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
29176         MonoClass now has the name and name_space fields. 
29177         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
29178         mono_get_method () takes and optional MonoClass as argument.
29179         Removed mono_typedef_from_name() and added mono_class_token_from_name()
29180         instead that takes advantage of a map from class names to typedef
29181         tokens in MonoImage.
29182
29183 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
29184
29185         * metadata.c: zero is not a valid alignment boundary.
29186         Merge MONO_TYPE_VOID in default decoding code.
29187
29188 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
29189
29190         * image.h: merged MonoMetadata into MonoImage
29191
29192         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
29193         identify the type of elements.
29194
29195 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
29196
29197         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
29198         * cil-coff.h: split MonoMSDOSHeader and add size info.
29199         * image.c: add some consistency checks.
29200         * metadata.c: fix row size computation: one programmer
29201         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
29202         add explanation for the locator routine.
29203         Fix decoding of size in method header.
29204         
29205 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
29206
29207         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
29208         (g_concat_dir_and_file): Bring g_concat_dir_and_file
29209         function from gnome-libs.  This uses the right path separator
29210         based on the OS, and also works around a bug in some systems where
29211         a double slash is not allowed. 
29212         (default_assembly_name_resolver): Use g_concat_dir_and_file
29213         (mono_assembly_open): ditto.
29214
29215 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
29216
29217         * metadata.c (mono_metadata_signature_equal): impl.
29218
29219         * *: void is now a realy MonoType (instead of using NULL)
29220         
29221         * metadata.c (do_mono_metadata_parse_type): use
29222         mono_metadata_parse_type to parse void value.
29223
29224 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
29225
29226         * metadata.c, metadata.h: in the signature and method header store
29227         only the space required for holding the loca vars and incoming arguments.
29228
29229 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
29230
29231         * metadata.c (do_mono_metadata_parse_type): treat void like any
29232         other type (instead of assigning NULL);
29233
29234 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
29235
29236         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
29237
29238 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
29239
29240         * image.c (do_mono_image_open): added a cache for arrays.
29241
29242 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
29243
29244         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
29245         decode a single column from a row in a metadata table and changes
29246         to take advantage of it in the typedef locator (gives a nice speed up).
29247         Store offset info for function params.
29248
29249 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
29250
29251         * image.h (MONO_IMAGE_IS_CORLIB): removed 
29252
29253 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
29254
29255         * assembly.c: how could mono_assembly_close () had ever worked?
29256         * metadata.c, metadata.h: provide offset info for local vars.
29257         Implement mono_type_size () to take care of alignment as well
29258         as size (it was mono_field_type_size in cli/class.c before).
29259
29260 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
29261
29262         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
29263
29264         * assembly.h (CORLIB_NAME): set to corlib.dll
29265
29266         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
29267
29268 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
29269
29270         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
29271         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
29272         tokentype.h: massive namespace cleanup.
29273
29274 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
29275
29276         * metadata.h, metadata.c: decode exception clauses when parsing method header.
29277
29278 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
29279
29280         * metadata.c (mono_metadata_free_type): added check for type !=
29281         NULL (void) before calling mono_metadata_free_type()
29282
29283 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
29284
29285         * metadata.h, row_indexes.h: added header with enumerations to use
29286         to index in the columns from tables in metadata and to decode coded
29287         tokens: we should start using this instead of embedding magic numbers
29288         all over the code.
29289
29290 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
29291
29292         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
29293         Move metadata_t info from cli_image_info_t to MonoImage, where
29294         it's easily accessible. Changed all the uses accordingly.
29295         Added the method and class caches to MonoImage.
29296         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
29297         and mono_metadata_decode_value () signature to be more consistent
29298         with the other parse functions (and simplify code). Taken advantage
29299         of zero-length array allocation with GCC. Removed reduntant (and
29300         wrong) MonoFieldType struct and use MonoParam instead. Changed
29301         mono_metadata_parse_field_type () to use common code for parsing.
29302         Added mono_metadata_typedef_from_field () and
29303         mono_metadata_typedef_from_method () to lookup a typedef index from a
29304         field or method token.
29305         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
29306
29307 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
29308
29309         * metadata.c (mono_metadata_parse_field_type): Implement. 
29310         (do_mono_metadata_parse_type): Split engine from
29311         mono_metadata_parse_type, so that we can create smaller structures
29312         for things that just have one pointer to the MonoType (look at
29313         the MonoFieldType)
29314
29315 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
29316
29317         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
29318         as Jan Gray found out, it is incorrect. 
29319
29320 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
29321
29322         * assembly.c: Implement asssembly loading.  This loads an image
29323         and loads all the referenced assemblies.  Come to think of it, we
29324         could always do lazy loading of the assemblies. 
29325
29326         * image.c (mono_image_open): Keep loaded images in a hashtable.
29327
29328         * image.h (MonoImage): Add reference count.
29329
29330 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
29331
29332         * assembly.c (mono_assembly_open): Keep track of the file name in
29333         case the assembly has no ASSEMBLY table.
29334
29335         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
29336         from get.c here.
29337
29338 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
29339
29340         * metadata.c, metadata.h: decode local vars in method header
29341         parse function. Change callers accordingly.
29342
29343 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
29344
29345         * metadata.h, cil-coff.h: protect against multiple inclusion.
29346         Added some new structures to hold information decoded from metadata:
29347         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
29348         and relevant decoding/free functions.
29349         * metadata.c: implement decoding functions. Add warning for out of bounds
29350         index in mono_metadata_locate(). Implement mono_get_method () to retreive
29351         all the info about a method signature and invocation. Remove check on
29352         uninitialized local var in parse_mh() and fix memory leak.
29353
29354 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
29355
29356         * metadata.h: More macros.
29357
29358         * tokentype.h: New file.
29359
29360 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
29361
29362         * assembly.c: added a consistency check and initialize
29363         some structures with g_new0().
29364         * metadata.c: fixed a couple more bugs in table size computation
29365         and add other checks for out-of bound access to metadata.
29366
29367 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
29368
29369         * metatada.c: fix bugs computing table sizes. Spew a
29370         warning when index in string heap is out of bounds.
29371
29372 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
29373
29374         * metadata.h: Add a couple of macros to manipulate tokens. 
29375
29376 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
29377
29378         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
29379         cli_section_tables).
29380
29381 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
29382
29383         * metadata.c (mono_metadata_user_string): New function, provides
29384         access to the UserString heap. 
29385
29386 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
29387
29388         * metadata.c: Add inline documentation.
29389
29390 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
29391
29392         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
29393         files. 
29394
29395 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
29396
29397         * typeattr.h: New file, TypeAttribute flags. 
29398
29399 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
29400
29401         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
29402         mono_assembly_ensure_section): Section loading code.
29403         (load_section_tables): Load the sections.
29404
29405         * mono/metadata/metadata.c (mono_metadata_locate_token,
29406         mono_metadata_locate): Functions to locate the information
29407         definition given a token or a table and an index.
29408         (mono_metadata_compute_table_bases): New.
29409         (compute_size): New function to compute the sizes of the various
29410         tables.
29411
29412         * mono/metadata/metadata.h: Finish listing the different index
29413         types. 
29414
29415         * mono/metadata/pedump.c: Improve to dump new information.
29416
29417 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
29418
29419         * mono/metadata/metadata.c: Entered all the tables matching
29420         Beta2. 
29421
29422         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
29423
29424
29425
29426